Compilateurs et bibliothèques numériques

Effectué

Considérations relatives à l’image HPC

L’image HPC recommandée à utiliser pour générer et exécuter des applications étroitement couplées est l’image CentOS-HPC 7.8+, disponible dans la Place de marché Azure. Cette image est préinstallée avec Mellanox Openfabrics Enterprise Distribution (MOFED). L’image présente des limites plus élevées, des bibliothèques de passage de messages (MPI) (telles que HPCX, OpenMPI et Intel MPI) et les bibliothèques optimisées pour le processeur AMD (AOCL). Toutes les bibliothèques MPI et les bibliothèques numériques sont disponibles via les fichiers de module d’environnement. Vous pouvez créer votre propre image HPC en utilisant Azure Image Builder ou HashiCorp Packer, mais vous devez installer MOFED pour accéder au réseau InfiniBand.

Considérations relatives au compilateur

Tous les compilateurs populaires devraient fonctionner sur toutes les machines virtuelles Azure HPC. Si les instructions de génération d’une application recommandent un compilateur et des indicateurs de compilateur particuliers, essayez cela avant d’essayer d’autres optimisations du compilateur. Pour les processeurs AMD EPYC (par exemple : HB120_v2 et HB60), vous devez utiliser un compilateur relativement récent pour garantir qu’il prend en charge les optimisations pour cette architecture. Pour GCC (Cloud de la communauté du secteur public), vous devez utiliser la version 7.4 minimum ou une version ultérieure. Si possible, utilisez la version GCC 9.2.0, qui est incluse dans l’image CentOS-HPC.

Spécifique à HC44

La machine virtuelle HC44 est un processeur Intel Skylake à deux sockets. Nous vous recommandons donc d’utiliser un compilateur Intel, si possible. Si l’application que vous compilez est subordonnée à la virgule flottante et que vous soupçonnez que les opérations de multiplication-addition fusionnées dominent les opérations à virgule flottante, vous pouvez essayer d’activer les instructions AVX 512. Pour cela, ajoutez ces indicateurs de compilation :

-O3 -xHost -xCORE-AVX512

Spécifique à HB120_v2 et HB60

Les compilateurs Intel fonctionnent bien sur les processeurs AMD EPYC. Si votre application utilise beaucoup la virgule flottante, vous pouvez activer AVX2 avec les indicateurs de compilation suivants :

-O3 --march=core-avx2

La suite de compilateurs d’optimisation AMD (AOCC) est spécialement paramétrée pour les processeurs AMD et peut améliorer les performances sur les appareils AMD.

Notes

Les compilateurs AOCC ne sont pas aussi populaires que les compilateurs GCC et Intel. Certaines applications ne pourront peut-être pas être compilées sans certaines modifications.

Considérations relatives aux bibliothèques numériques

Plusieurs applications HPC ont des dépendances vis-à-vis des bibliothèques Basic Linear Algebra Subprograms (BLAS), Linear Algebra Package (LAPACK) et Fastest Fourier Transform in the West (FFTW). Ces opérations numériques peuvent représenter un pourcentage significatif du total des opérations à virgule flottante. Il est prévu que vous utilisiez des versions paramétrées de ces bibliothèques plutôt que des implémentations de référence non paramétrées.

Spécifique à HC44

Les bibliothèques BLAS, LAPACK et FFTW les mieux paramétrées pour les processeurs Intel sont contenues dans la Bibliothèque de noyaux mathématiques Intel (MKL). L’environnement MKL contient des scripts pour générer des wrappers FFTW. Vous pouvez donc accéder à la bibliothèque Intel FFT paramétrée via l’API FFTW.

Spécifique à HB120_v2 et HB60

Les bibliothèques d’optimisation pour le processeur AMD (AMD-AOCL) contiennent une bibliothèque BLAS paramétrée (AMD BLIS), une bibliothèque LAPACK paramétrée (AMD libFLAME) et une bibliothèque FFTW paramétrée (AMD FFTW). Ces bibliothèques paramétrées sont également disponibles sur l’image CentOS-HPC 7.8+ dans la Place de marché Azure.