Standard software environments/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Created page with "En date d’octobre 2020, les trois versions des environnements standards étaient 2016.4, 2018.3, et 2020 avec chaque version comportant des améliorations importantes.")
No edit summary
 
(69 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<languages />
<languages />


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]].


= 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 par 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.  


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.


En date d’octobre 2020, les trois versions des environnements standards étaient 2016.4, 2018.3, et 2020 avec chaque version comportant des améliorations importantes.
En date de février 2023, les quatre versions des environnements standards étaient 2023, 2020, 2018.3 et 2016.4, chacune comportant des améliorations importantes. Nous supportons seulement les versions 2023 et 2020.


This page describes these changes and explains why you should upgrade to a more recent version.  
Nous décrivons ici les différences entre les versions et expliquons pourquoi il est préférable d’installer la plus récente.
   
   
In general, new versions of software packages will get installed with the newest software environment.
Les plus récentes versions des paquets logiciels sont habituellement installées dans le plus récent environnement logiciel.


== <code>StdEnv/2016.4</code> ==
=== <code>StdEnv/2023</code> ===
This is the initial version of our software environment released in 2016 with the deployment of [[Cedar]] and [[Graham]]. It features GCC 5.4.0 and Intel 2016.4 as default compilers, and Open MPI 2.1.1 as its default implementation of MPI. Most of the software compiled with this environment does not support AVX512 instructions provided by the Skylake processors on [[Béluga/en|Béluga]], [[Niagara]], as well as on the most recent additions to Cedar and Graham.
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.  


Activez cet environnement avec la commande  
Pour activer cet environnement, lancez la commande  
{{Command|module load StdEnv/2016.4}}
{{Command|module load StdEnv/2023}}
 
==== 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.


== <code>StdEnv/2018.3</code> ==
==== Changements aux modules par défaut ====
This is the second version of our software environment. It was released in 2018 with the deployment of [[Béluga]], and shortly after the deployment of [[Niagara]]. Defaults were upgraded to GCC 7.3.0, Intel 2018.3, and Open MPI 3.1.2. This is the first version to support AVX512 instructions.
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).


Activez cet environnement avec la commande 
Les versions par défaut des modules suivants ont été mises à jour&nbsp;:
{{Command|module load StdEnv/2018.3}}
* GCC 9.3 => GCC 12.3
* OpenMPI 4.0.3 => OpenMPI 4.1.5
* Compilateurs Intel 2020 => 2023
* Intel MKL 2020 => Flexiblas 3.3.1 (avec MKL 2023 ou BLIS 0.9.0)
* CUDA 11 => CUDA 12


== <code>StdEnv/2020</code> ==
=== <code>StdEnv/2020</code> ===
This is the most recent iteration of our software environment with the most changes so far. It uses GCC 9.3.0, Intel 2020.1, and Open MPI 4.0.3 as defaults.  
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.  


Activez cet environnement avec la commande  
Activez cet environnement avec la commande  
{{Command|module load StdEnv/2020}}
{{Command|module load StdEnv/2020}}


=== Performance improvements ===
====Amélioration de la performance====
Binaries compiled with the Intel compiler now automatically support both AVX2 and AVX512 instruction sets. In technical terms, we call them ''multi-architecture binaries'', also known as [https://en.wikipedia.org/wiki/Fat_binary fat binaries]. This means that when running on a cluster such as Cedar and Graham which has multiple generations of processors, you don't have to manually load one of the <tt>arch</tt> modules if you use software packages generated by the Intel compiler.  
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.
 
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.
 
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).  


Many software packages which were previously installed either with GCC or with Intel are now installed at a lower level of the software hierarchy, which makes the same module visible, irrespective of which compiler is loaded. For example, this is the case for many bioinformatics software packages as well as the [[R]] modules, which previously required loading the <code>gcc</code> module. This could be done because we introduced optimizations specific to CPU architectures at a level of the software hierarchy lower than the compiler level.  
==== 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].  


We also installed a more recent version of the [https://en.wikipedia.org/wiki/GNU_C_Library GNU C Library], which introduces optimizations in some mathematical functions. This has increased the requirement on the version of the Linux Kernel (see below).  
====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.


=== Change in the compatibility layer ===
==== Extensions de modules ====
Another enhancement for the 2020 release was a change in tools for our compatibility layer. The compatibility layer is between the operating system and all other software packages. This layer is designed to ensure that compilers and scientific applications will work whether they run on CentOS, Ubuntu, or Fedora. For the 2016.4 and 2018.3 versions, we used the [https://en.wikipedia.org/wiki/Nix_package_manager Nix package manager], while for the 2020 version, we used [https://wiki.gentoo.org/wiki/Project:Prefix Gentoo Prefix].  
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}}
vous saurez que vous pouvez obtenir le module <tt>qt/5.12.8</tt>.


=== Change in kernel requirement ===
=== <code>StdEnv/2018.3</code> ===
Versions 2016.4 and 2018.3 required a Linux kernel version 2.6.32 or more recent. This supported CentOS versions starting at CentOS 6. With the 2020 version, we require a Linux kernel 3.10 or better. This means it no longer supports CentOS 6, but requires CentOS 7 instead. Other distributions usually have kernels which are much more recent, so you probably don't need to change your distribution if you are using this standard environment on something other than CentOS.
{{Template:Warning
|title=Obsolète
|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.
 
Activez cet environnement avec la commande 
{{Command|module load StdEnv/2018.3}}


= How can I change which version of <code>StdEnv</code> is my default? =
=== <code>StdEnv/2016.4</code> ===
Our clusters use different versions of <code>StdEnv</code> as their default version. As of August 2020, [[Cedar]] and [[Graham]] use <code>StdEnv/2016.4</code>, while [[Béluga/en|Béluga]] uses <code>StdEnv/2018.3</code>.  [[Niagara]] also defaults to <code>StdEnv/2018.3</code> if you <code>module load CCEnv StdEnv</code>. In the future, we will probably switch all of them to use <code>StdEnv/2020</code>. However, users can specify their own default by running the following command (example provided for the 2020 version)
{{Template:Warning
{{Command|echo "module-version StdEnv/2020 default" >> $HOME/.modulerc}}
|title=Obsolète
|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.


= Do I need to reinstall/recompile my code if the <code>StdEnv</code> version changes? =
Activez cet environnement avec la commande
Yes. If you compile your own code, or install R or Python packages, you should recompile or reinstall the packages you need using the newest version of the standard environment.
{{Command|module load StdEnv/2016.4}}

Latest revision as of 14:47, 10 June 2024

Other languages:

Pour plus d'information sur la migration vers les environnements standards, voyez la page Migration vers le nouvel environnement standard.

Description

Nos environnements logiciels sont rendus disponibles par un ensemble de 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.

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é StdEnv. Ces environnements sont communément utilisés par notre équipe technique pour construire d’autres logiciels.

En date de février 2023, les quatre versions des environnements standards étaient 2023, 2020, 2018.3 et 2016.4, chacune comportant des améliorations importantes. Nous supportons seulement les versions 2023 et 2020.

Nous décrivons ici les différences entre les versions et expliquons pourquoi il est préférable d’installer la plus récente.

Les plus récentes versions des paquets logiciels sont habituellement installées dans le plus récent environnement logiciel.

StdEnv/2023

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.

Pour activer cet environnement, lancez la commande

Question.png
[name@server ~]$ module load StdEnv/2023

Amélioration de la performance

L'ensemble minimal des instructions CPU supporté est AVX2, de façon générale x86-64-v3. Même la couche de compatibilité qui offre les commandes Linux de base est compilé avec des optimisations pour ces commandes.

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).

Les versions par défaut des modules suivants ont été mises à jour :

  • GCC 9.3 => GCC 12.3
  • OpenMPI 4.0.3 => OpenMPI 4.1.5
  • Compilateurs Intel 2020 => 2023
  • Intel MKL 2020 => Flexiblas 3.3.1 (avec MKL 2023 ou BLIS 0.9.0)
  • CUDA 11 => CUDA 12

StdEnv/2020

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.

Activez cet environnement avec la commande

Question.png
[name@server ~]$ module load StdEnv/2020

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 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 arch si vous utilisez des paquets logiciels générés avec le compilateur Intel.

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 et pour plusieurs paquets en bio-informatique pour lesquels le module gcc 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.

Nous avons aussi installé une version plus récente de 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).

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 Nix package manager à Gentoo Prefix.

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.

Extensions de modules

Avec l'environnement 2020, nous avons commencé à installer plusieurs extensions Python dans les modules principaux correspondants. Par exemple, PyQt5 a été installé dans le module qt/5.12.8 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

Question.png
[name@server ~]$ module spider pyqt5

vous saurez que vous pouvez obtenir le module qt/5.12.8.

StdEnv/2018.3

Obsolète

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.

Activez cet environnement avec la commande

Question.png
[name@server ~]$ module load StdEnv/2018.3

StdEnv/2016.4

Obsolète

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.

Activez cet environnement avec la commande

Question.png
[name@server ~]$ module load StdEnv/2016.4