38,840
edits
No edit summary |
(Updating to match new version of source page) |
||
Line 3: | Line 3: | ||
Pour plus d'information sur la migration vers les environnements standards, voyez la page [[Migration to the new standard environment/fr|Migration vers le nouvel environnement standard]]. | Pour plus d'information sur la migration vers les environnements standards, voyez la page [[Migration to the new standard environment/fr|Migration vers le nouvel environnement standard]]. | ||
<div class="mw-translate-fuzzy"> | |||
= Description = | = Description = | ||
Nos environnements logiciels sont rendus disponibles par un ensemble de [[Utiliser_des_modules|modules]] qui vous permettent d'alterner entre différentes versions d'un paquet logiciel. Ces modules sont organisés selon une structure en arbre dont le tronc est composé des mêmes utilitaires que ceux offerts dans les environnements Linux. Les branches principales de ce tronc sont les versions des compilateurs auxquelles sont rattachées des sous-branches pour chaque version de MPI ou CUDA. | Nos environnements logiciels sont rendus disponibles par un ensemble de [[Utiliser_des_modules|modules]] qui vous permettent d'alterner entre différentes versions d'un paquet logiciel. Ces modules sont organisés selon une structure en arbre dont le tronc est composé des mêmes utilitaires que ceux offerts dans les environnements Linux. Les branches principales de ce tronc sont les versions des compilateurs auxquelles sont rattachées des sous-branches pour chaque version de MPI ou CUDA. | ||
</div> | |||
Un environnement logiciel standard est composé d’une combinaison particulière de modules de compilation et de modules MPI groupés dans un module appelé <code>StdEnv</code>. Ces environnements sont communément utilisés par notre équipe technique pour construire d’autres logiciels. | Un environnement logiciel standard est composé d’une combinaison particulière de modules de compilation et de modules MPI groupés dans un module appelé <code>StdEnv</code>. Ces environnements sont communément utilisés par notre équipe technique pour construire d’autres logiciels. | ||
Line 14: | Line 16: | ||
Les plus récentes versions des paquets logiciels sont habituellement installées dans le plus récent environnement logiciel. | Les plus récentes versions des paquets logiciels sont habituellement installées dans le plus récent environnement logiciel. | ||
<div class="mw-translate-fuzzy"> | |||
== <code>StdEnv/2023</code> == | == <code>StdEnv/2023</code> == | ||
Cette dernière itération de notre environnement logiciel utilise par défaut GCC 12.3.0, Intel 2023.1, et Open MPI 4.1.5. | Cette dernière itération de notre environnement logiciel utilise par défaut GCC 12.3.0, Intel 2023.1, et Open MPI 4.1.5. | ||
</div> | |||
Pour activer cet environnement, lancez la commande | Pour activer cet environnement, lancez la commande | ||
{{Command|module load StdEnv/2023}} | {{Command|module load StdEnv/2023}} | ||
<div class="mw-translate-fuzzy"> | |||
=== Amélioration de la performance === | === Amélioration de la performance === | ||
L'ensemble minimal des instructions CPU supporté est AVX2, de façon générale <code>x86-64-v3</code>. Même la couche de compatibilité qui offre les commandes Linux de base est compilé avec des optimisations pour ces commandes. | L'ensemble minimal des instructions CPU supporté est AVX2, de façon générale <code>x86-64-v3</code>. Même la couche de compatibilité qui offre les commandes Linux de base est compilé avec des optimisations pour ces commandes. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Changements aux modules par défaut === | === Changements aux modules par défaut === | ||
Le compilateur par défaut GCC plutôt que Intel. Nous compilons avec Intel uniquement les applications qui démontrent une meilleure performance avec Intel. CUDA devient une extension de OpenMPI plutôt que le contraire, c'est-à-dire que MPI pour CUDA est chargé au lancement si CUDA est chargé. Ceci permet de partager plusieurs bibliothèques MPI sur toutes les branches (CUDA ou non). | Le compilateur par défaut GCC plutôt que Intel. Nous compilons avec Intel uniquement les applications qui démontrent une meilleure performance avec Intel. CUDA devient une extension de OpenMPI plutôt que le contraire, c'est-à-dire que MPI pour CUDA est chargé au lancement si CUDA est chargé. Ceci permet de partager plusieurs bibliothèques MPI sur toutes les branches (CUDA ou non). | ||
</div> | |||
Les versions par défaut des modules suivants ont été mises à jour : | Les versions par défaut des modules suivants ont été mises à jour : | ||
Line 33: | Line 41: | ||
* CUDA 11 => CUDA 12 | * CUDA 11 => CUDA 12 | ||
<div class="mw-translate-fuzzy"> | |||
== <code>StdEnv/2020</code> == | == <code>StdEnv/2020</code> == | ||
Cette plus récente version de notre environnement logiciel est celle qui a connu le plus de modifications. Les compilateurs par défaut sont passés à GCC 9.3.0 et Intel 2020.1. MPI par défaut est passée à Open MPI 4.0.3. | Cette plus récente version de notre environnement logiciel est celle qui a connu le plus de modifications. Les compilateurs par défaut sont passés à GCC 9.3.0 et Intel 2020.1. MPI par défaut est passée à Open MPI 4.0.3. | ||
</div> | |||
Activez cet environnement avec la commande | Activez cet environnement avec la commande | ||
{{Command|module load StdEnv/2020}} | {{Command|module load StdEnv/2020}} | ||
<div class="mw-translate-fuzzy"> | |||
===Amélioration de la performance=== | ===Amélioration de la performance=== | ||
Les binaires générés avec le compilateur Intel supportent automatiquement les jeux d’instructions AVX2 et AVX512. Techniquement, ce sont des binaires multiarchitecture, aussi appelés [https://en.wikipedia.org/wiki/Fat_binary fat binaries]. Ceci signifie que quand vous utilisez une grappe comme Cedar ou Graham qui ont connu plusieurs générations de processeurs, vous n’avez plus besoin de charger manuellement un des modules <tt>arch</tt> si vous utilisez des paquets logiciels générés avec le compilateur Intel. | Les binaires générés avec le compilateur Intel supportent automatiquement les jeux d’instructions AVX2 et AVX512. Techniquement, ce sont des binaires multiarchitecture, aussi appelés [https://en.wikipedia.org/wiki/Fat_binary fat binaries]. Ceci signifie que quand vous utilisez une grappe comme Cedar ou Graham qui ont connu plusieurs générations de processeurs, vous n’avez plus besoin de charger manuellement un des modules <tt>arch</tt> si vous utilisez des paquets logiciels générés avec le compilateur Intel. | ||
</div> | |||
Certains paquets logiciels installés auparavant avec GCC ou Intel se trouvent maintenant à un niveau plus bas de la hiérarchie, ce qui fait que le même module est visible peu importe le compilateur qui est chargé; c’est le cas par exemple pour les modules [[R/fr|R]] et pour plusieurs paquets en bio-informatique pour lesquels le module <code>gcc</code> devait auparavant être chargé. Ceci a été rendu possible par des optimisations spécifiques aux architectures CPU que nous avons effectuées sous le niveau du compilateur. | Certains paquets logiciels installés auparavant avec GCC ou Intel se trouvent maintenant à un niveau plus bas de la hiérarchie, ce qui fait que le même module est visible peu importe le compilateur qui est chargé; c’est le cas par exemple pour les modules [[R/fr|R]] et pour plusieurs paquets en bio-informatique pour lesquels le module <code>gcc</code> devait auparavant être chargé. Ceci a été rendu possible par des optimisations spécifiques aux architectures CPU que nous avons effectuées sous le niveau du compilateur. | ||
Line 46: | Line 58: | ||
Nous avons aussi installé une version plus récente de [https://en.wikipedia.org/wiki/GNU_C_Library GNU C Library] qui offre des fonctions mathématiques optimisées. Ceci a nécessité une plus récente version du noyau Linux (voir ci-dessous). | Nous avons aussi installé une version plus récente de [https://en.wikipedia.org/wiki/GNU_C_Library GNU C Library] qui offre des fonctions mathématiques optimisées. Ceci a nécessité une plus récente version du noyau Linux (voir ci-dessous). | ||
<div class="mw-translate-fuzzy"> | |||
=== Couche de compatibilité === | === Couche de compatibilité === | ||
La couche de compatibilité est un niveau de la hiérarchie en dessous de celui des compilateurs et des paquets logiciels pour que ces derniers soient indépendants du système d’exploitation sous-jacent et qu’ils fonctionnent autant sous CentOS que sous Ubuntu ou Fedora.Un changement majeur dans la version 2020 a été de changer d'outil pour la couche de compatibilité en passant de [https://en.wikipedia.org/wiki/Nix_package_manager Nix package manager] à [https://wiki.gentoo.org/wiki/Project:Prefix Gentoo Prefix]. | La couche de compatibilité est un niveau de la hiérarchie en dessous de celui des compilateurs et des paquets logiciels pour que ces derniers soient indépendants du système d’exploitation sous-jacent et qu’ils fonctionnent autant sous CentOS que sous Ubuntu ou Fedora.Un changement majeur dans la version 2020 a été de changer d'outil pour la couche de compatibilité en passant de [https://en.wikipedia.org/wiki/Nix_package_manager Nix package manager] à [https://wiki.gentoo.org/wiki/Project:Prefix Gentoo Prefix]. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
===Noyau Linux=== | ===Noyau Linux=== | ||
Les versions 2016.4 et 2018.3 nécessitent une version du noyau Linux 2.6.32 ou plus, ce qui est supporté à partir de CentOS 6. La version 2020 demande un noyau Linux 3.10 ou plus, ce qui est supporté à partir de CentOS 7. Les autres distributions Linux ont habituellement un noyau beaucoup plus récent et vous n’aurez donc pas à changer votre distribution Linux si vous utilisez cet environnement standard sous une autre que CentOS. | Les versions 2016.4 et 2018.3 nécessitent une version du noyau Linux 2.6.32 ou plus, ce qui est supporté à partir de CentOS 6. La version 2020 demande un noyau Linux 3.10 ou plus, ce qui est supporté à partir de CentOS 7. Les autres distributions Linux ont habituellement un noyau beaucoup plus récent et vous n’aurez donc pas à changer votre distribution Linux si vous utilisez cet environnement standard sous une autre que CentOS. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
=== Extensions de modules === | === Extensions de modules === | ||
Avec l'environnement 2020, nous avons commencé à installer plusieurs extensions Python dans les modules principaux correspondants. Par exemple, <tt>PyQt5</tt> a été installé dans le module <tt>qt/5.12.8</tt> pour supporter plusieurs versions de Python. Le système des modules a été modifié pour vous permettre de trouver facilement ce type d'extensions. Par exemple, avec | Avec l'environnement 2020, nous avons commencé à installer plusieurs extensions Python dans les modules principaux correspondants. Par exemple, <tt>PyQt5</tt> a été installé dans le module <tt>qt/5.12.8</tt> pour supporter plusieurs versions de Python. Le système des modules a été modifié pour vous permettre de trouver facilement ce type d'extensions. Par exemple, avec | ||
{{Command|module spider pyqt5}} | {{Command|module spider pyqt5}} | ||
vous saurez que vous pouvez obtenir le module <tt>qt/5.12.8</tt>. | vous saurez que vous pouvez obtenir le module <tt>qt/5.12.8</tt>. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
== <code>StdEnv/2018.3</code> == | == <code>StdEnv/2018.3</code> == | ||
{{Template:Warning | {{Template:Warning | ||
Line 62: | Line 81: | ||
|content=Cet environnement n'est plus supporté.}} | |content=Cet environnement n'est plus supporté.}} | ||
Cette deuxième version de notre environnement logiciel a été installée en 2018, avec la mise en service de la grappe [[Béluga]], peu après le déploiement de [Niagara/fr|Niagara]. Les compilateurs par défaut sont passés à GCC 7.3.0 et Intel 2018.3. L’implémentation MPI par défaut est passée à Open MPI 3.1.2. Il s’agit de la première version à offrir le support des instructions AVX512. | Cette deuxième version de notre environnement logiciel a été installée en 2018, avec la mise en service de la grappe [[Béluga]], peu après le déploiement de [Niagara/fr|Niagara]. Les compilateurs par défaut sont passés à GCC 7.3.0 et Intel 2018.3. L’implémentation MPI par défaut est passée à Open MPI 3.1.2. Il s’agit de la première version à offrir le support des instructions AVX512. | ||
</div> | |||
Activez cet environnement avec la commande | Activez cet environnement avec la commande | ||
{{Command|module load StdEnv/2018.3}} | {{Command|module load StdEnv/2018.3}} | ||
<div class="mw-translate-fuzzy"> | |||
== <code>StdEnv/2016.4</code> == | == <code>StdEnv/2016.4</code> == | ||
{{Template:Warning | {{Template:Warning | ||
Line 71: | Line 92: | ||
|content=Cet environnement n'est plus supporté.}} | |content=Cet environnement n'est plus supporté.}} | ||
Cette première version de notre environnement logiciel a été installée en 2016 avec la mise en service des grappes [Cedar/fr|Cedar] et [Graham/fr|Graham]. Les compilateurs par défaut sont GCC 5.4.0 et Intel 2016.4. L’implémentation MPI par défaut est Open MPI 2.1.1. La plupart des logiciels compilés dans cet environnement ne supportent pas les instructions AVX512, contrairement aux processeurs Skylake de [[Béluga]], [Niagara/fr|Niagara] et aux récents ajouts à Cedar et Graham. | Cette première version de notre environnement logiciel a été installée en 2016 avec la mise en service des grappes [Cedar/fr|Cedar] et [Graham/fr|Graham]. Les compilateurs par défaut sont GCC 5.4.0 et Intel 2016.4. L’implémentation MPI par défaut est Open MPI 2.1.1. La plupart des logiciels compilés dans cet environnement ne supportent pas les instructions AVX512, contrairement aux processeurs Skylake de [[Béluga]], [Niagara/fr|Niagara] et aux récents ajouts à Cedar et Graham. | ||
</div> | |||
Activez cet environnement avec la commande | Activez cet environnement avec la commande | ||
{{Command|module load StdEnv/2016.4}} | {{Command|module load StdEnv/2016.4}} |