Kompilatorer och numeriska bibliotek

Slutförd

Överväganden för HPC-avbildning

Den rekommenderade HPC-avbildningen som ska användas för att skapa och köra tätt kopplade program är CentOS-HPC 7.8+-avbildningen, som är tillgänglig på Azure Marketplace. Den här avbildningen är förinstallerad med Mellanox Openfabrics Enterprise Distribution (MOFED). Avbildningen har högre uppsättningsgränser, MPI-bibliotek (meddelandeöverföring) (till exempel HPCX, OpenMPI och Intel MPI) och AMD-optimerade CPU-bibliotek (AOCL). Alla MPI-bibliotek och numeriska bibliotek är tillgängliga via miljömodulfiler. Du kan skapa en egen HPC-avbildning med hjälp av Azure Image Builder eller HashiCorp Packer, men du måste installera MOFED för att få åtkomst till InfiniBand-nätverket.

Kompilatoröverväganden

Alla populära kompilatorer bör fungera på alla virtuella Azure HPC-datorer. Om ett programs bygginstruktioner rekommenderar en viss kompilator- och kompilatorflaggor kan du prova det först innan du provar några andra kompilatoroptimeringar. För AMD EPYC-processorer (till exempel: HB120_v2 och HB60) måste du använda en relativt ny kompilator för att säkerställa att den stöder optimeringar för den här arkitekturen. För GCC bör du använda minst version 7.4 eller senare. Om möjligt använder du GCC 9.2.0, som ingår i CentOS-HPC-avbildningen.

Specifikt för HC44

Den virtuella HC44-datorn är en Intel Skylake-processor med två socketar, så vi rekommenderar att du använder en Intel-kompilator om möjligt. Om programmet som du kompilerar är flyttalsbundet och du misstänker att sammansvetsade multiplikationsåtgärder dominerar flyttalsåtgärderna kan du prova att aktivera AVX 512-instruktioner. Det gör du genom att lägga till följande kompileringsflaggor:

-O3 -xHost -xCORE-AVX512

Specifikt för HB120_v2 och HB60

Intel-kompilatorer fungerar bra på AMD EPYC-processorer. Om ditt program är flyttalsintensivt kan du aktivera AVX2 med följande kompileringsflaggor:

-O3 --march=core-avx2

AMD Optimizeing Compiler Suite (AOCC) är speciellt justerat för AMD-processorer och kan förbättra prestanda på AMD-enheter.

Kommentar

AOCC-kompilatorer är inte lika populära som GCC- och Intel-kompilatorer. Vissa program kanske inte kompileras utan vissa ändringar.

Numeriska biblioteksöverväganden

Flera HPC-program har beroenden för Basic Linear Algebra-underprogram (BLAS), Linjär Algebra PACKage (LAPACK) och Snabbaste Fourier Transform i väst (FFTW). Dessa numeriska åtgärder kan vara en betydande procentandel av de totala flyttalsåtgärderna. Du förväntas använda finjusterade versioner av dessa bibliotek i stället för otunna referensimplementeringar.

Specifikt för HC44

De bästa anpassade BLAS-, LAPACK- och FFTW-biblioteken för Intel-processorer finns i Intel Math Kernel Library (MKL). MKL-miljön har skript för att skapa FFTW-omslutningar, så att du kan komma åt det finjusterade Intel FFT-biblioteket via FFTW-API:et.

Specifikt för HB120_v2 och HB60

AMD Optimizeing CPU Libraries (AMD-AOCL) innehåller ett finjusterat BLAS-bibliotek (AMD BLIS), en finjusterad LAPACK (AMD libFLAME) och ett finjusterat FFTW-bibliotek (AMD FFTW). Dessa anpassade bibliotek är också tillgängliga på CentOS-HPC 7.8+-avbildningen på Azure Marketplace.