Compiler und numerische Bibliotheken

Abgeschlossen

Überlegungen zu HPC-Images

Als HPC-Image für das Entwickeln und Ausführen eng gekoppelter Anwendungen wird das im Azure Marketplace verfügbare Image für CentOS-HPC 7.8 oder höher empfohlen. Bei diesem Image ist Mellanox OpenFabrics Enterprise Distribution (MOFED) bereits vorinstalliert. Das Image bietet höhere Grenzwerte, Message-Passing-Bibliotheken (MPI) (z. B. HPC-X, OpenMPI und Intel MPI) sowie AMD Optimized CPU Libraries (AOCL). Alle MPI-Bibliotheken und numerischen Bibliotheken sind über Umgebungsmoduldateien verfügbar. Mit Azure Image Builder oder HashiCorp Packer können Sie Ihr eigenes HPC-Image erstellen. Für Zugriff auf das InfiniBand-Netzwerk müssen Sie jedoch MOFED installieren.

Überlegungen zum Compiler

Alle gängigen Compiler sollten auf allen Azure-HPC-VMs funktionieren. Wenn in den Buildanweisungen einer Anwendung ein bestimmter Compiler und bestimmte Compilerflags empfohlen werden, befolgen Sie zuerst diese Anweisungen, bevor Sie andere Compileroptimierungen ausprobieren. Bei AMD EPYC-Prozessoren (z. B. HB120_v2 und HB60) müssen Sie einen relativ neuen Compiler verwenden, um sicherzustellen, dass er Optimierungen für diese Architektur unterstützt. Sie sollten mindestens GCC-Version 7.4 verwenden. Verwenden Sie nach Möglichkeit GCC 9.2.0, die im CentOS-HPC-Image enthalten ist.

Spezifische Überlegungen zu HC44

Bei der HC44-VM handelt es sich um einen Intel Skylake-Prozessor mit zwei Sockets. Daher wird empfohlen, nach Möglichkeit einen Intel-Compiler zu verwenden. Wenn die Anwendung, die Sie kompilieren, gleitkommagebunden ist und Sie vermuten, dass es sich bei den Gleitkommaoperationen hauptsächlich um Fused-multiply-add-Operationen handelt, können Sie versuchen, AVX-512-Anweisungen zu aktivieren. Fügen Sie dazu die folgenden Kompilierungsflags hinzu:

-O3 -xHost -xCORE-AVX512

Spezifische Überlegungen zu HB120_v2 und HB60

Intel-Compiler funktionieren gut auf AMD EPYC-Prozessoren. Wenn Ihre Anwendung gleitkommaintensiv ist, können Sie mit den folgenden Kompilierungsflags AVX2 aktivieren:

-O3 --march=core-avx2

Die AMD Optimizing Compiler-Suite (AOCC) ist speziell für AMD-Prozessoren optimiert und kann die Leistung auf AMD-Geräten verbessern.

Hinweis

AOCC-Compiler sind nicht so beliebt wie GCC- und Intel-Compiler. Einige Anwendungen können möglicherweise nicht ohne Änderungen kompiliert werden.

Überlegungen zu numerischen Bibliotheken

Einige HPC-Anwendungen verfügen über Abhängigkeiten von den Bibliotheken BLAS (Basic Linear Algebra Subprograms), LAPACK (Linear Algebra PACKage) und FFTW (Fastest Fourier Transform in the West). Die numerischen Operationen können einen erheblichen Prozentsatz der gesamten Gleitkommaoperationen ausmachen. Es wird erwartet, dass Sie anstelle der nicht optimierten Referenzimplementierungen optimierte Versionen dieser Bibliotheken verwenden.

Spezifische Überlegungen zu HC44

Die besten optimierten BLAS-, LAPACK- und FFTW-Bibliotheken für Intel-Prozessoren sind in Intel Math Kernel Library (MKL) enthalten. Die MKL-Umgebung verfügt über Skripts zum Erstellen von FFTW-Wrappern, damit Sie über die FFTW-API auf die optimierte FFT-Bibliothek von Intel zugreifen können.

Spezifische Überlegungen zu HB120_v2 und HB60

AMD Optimizing CPU Libraries (AMD-AOCL) enthält optimierte Versionen der BLAS-Bibliothek (AMD BLIS), LAPACK-Bibliothek (AMD libFLAME) und FFTW-Bibliothek (AMD FFTW). Diese optimierten Bibliotheken sind auch in Version 7.8 und höher des CentOS-HPC-Image im Azure Marketplace verfügbar.