Compiladores y bibliotecas numéricas

Completado

Consideraciones sobre las imágenes de HPC

La imagen de HPC recomendada para compilar y ejecutar aplicaciones estrechamente acopladas es la imagen CentOS-HPC 7.8+, disponible en Azure Marketplace. Esta imagen viene preinstalada con Mellanox Openfabrics Enterprise Distribution (MOFED). La imagen incluye límites de conjuntos más altos, bibliotecas de interfaz de paso de mensajes (MPI) (como HPCX, OpenMPI e Intel MPI) y las bibliotecas de CPU optimizadas para AMD (AOCL). Todas las bibliotecas de MPI y las bibliotecas numéricas están disponibles por medio de los archivos de módulo del entorno. Puede crear su propia imagen de HPC mediante el generador de imágenes de Azure o HashiCorp Packer, pero debe instalar MOFED para acceder a la red InfiniBand.

Consideraciones del compilador

Todos los compiladores populares deberían funcionar en todas las máquinas virtuales de HPC de Azure. Si las instrucciones de compilación de una aplicación recomiendan un compilador y unas marcas de compilación en particular, pruebe eso primero antes de probar otras optimizaciones del compilador. En el caso de los procesadores AMD EPYC (por ejemplo: HB120_v2 y HB60), debe usar un compilador relativamente nuevo para asegurarse de que admite optimizaciones para esta arquitectura. Con GCC, debe usar al menos la versión 7.4 o posterior. Si es posible, use GCC 9.2.0, que se incluye en la imagen CentOS-HPC.

Específico de HC44

La máquina virtual HC44 es un procesador Intel Skylake de dos sockets, por lo que se recomienda usar un compilador de Intel si es posible. Si la aplicación que está compilando está enlazada a punto flotante y sospecha que las operaciones de multiplicación y adición fusionadas dominan las operaciones de punto flotante, puede intentar habilitar las instrucciones de AVX 512. Para ello, agregue estas marcas de compilación:

-O3 -xHost -xCORE-AVX512

Específico de HB120_v2 y HB60

Los compiladores de Intel funcionan bien en procesadores AMD EPYC. Si su aplicación hace un uso intensivo de puntos flotantes, puede habilitar AVX2 con las siguientes marcas de compilación:

-O3 --march=core-avx2

El conjunto AMD Optimizing Compiler (AOCC) se adapta especialmente a los procesadores AMD y es posible que mejore el rendimiento de los dispositivos AMD.

Nota:

Los compiladores de AOCC no son tan populares como los de Intel y GCC. Es posible que algunas aplicaciones no se compilen sin modificaciones.

Consideraciones sobre la biblioteca numérica

Varias aplicaciones de HPC tienen dependencias de Basic Linear Algebra Subprograms (BLAS), Linear Algebra PACKage (LAPACK) y Fastest Fourier Transform in the West (FFTW). Estas operaciones numéricas pueden suponer un porcentaje significativo de las operaciones de punto flotante totales. Se espera que use versiones optimizadas de estas bibliotecas, en lugar de implementaciones de referencia sin optimizar.

Específico de HC44

Las mejores bibliotecas de BLAS, LAPACK y FFTW optimizadas para procesadores Intel se encuentran en la biblioteca Math Kernel Library (MKL) de Intel. El entorno de MKL tiene scripts para compilar contenedores de FFTW, de modo que pueda acceder a la biblioteca de Intel FFT optimizada a través de la API de FFTW.

Específico de HB120_v2 y HB60

Las bibliotecas AMD Optimizing CPU (AMD-AOCL) contienen una biblioteca BLAS (AMD BLIS) optimizada, una biblioteca LAPACK (AMD LibFLAME) optimizada y una biblioteca FFTW (AMD FFTW) optimizada. Estas bibliotecas optimizadas también están disponibles en la imagen CentOS-HPC 7.8+ en Azure Marketplace.