Compilatori e librerie numeriche
Considerazioni sulle immagini HPC
L'immagine HPC consigliata da usare per compilare ed eseguire applicazioni tightly coupled è l'immagine CentOS-HPC 7.8+, disponibile in Azure Marketplace. Questa immagine viene preinstallata con Mellanox OpenFabrics Enterprise Distribution (MOFED). L'immagine include limiti di set più elevati, librerie MPI (Message Passing), ad esempio HPCX, OpenMPI e Intel MPI, e le librerie CPU ottimizzate per AMD (AOCL). Tutte le librerie MPI e le librerie numeriche sono disponibili tramite i file di modulo dell'ambiente. È possibile creare un'immagine HPC personalizzata usando Azure Image Builder o HashiCorp Packer, ma è necessario installare MOFED per accedere alla rete InfiniBand.
Considerazioni sui compilatori
Tutti i compilatori più comuni dovrebbero funzionare in tutte le macchine virtuali HPC di Azure. Se le istruzioni di compilazione di un'applicazione consigliano un compilatore e flag del compilatore specifici, provare il compilatore consigliato prima di provare altre ottimizzazioni del compilatore. Per i processori AMD EPYC, ad esempio HB120_v2 e HB60, è necessario usare un compilatore relativamente nuovo per assicurarsi che supporti le ottimizzazioni per questa architettura. Per GCC è necessario usare almeno la versione 7.4 o successiva. Se possibile, usare GCC 9.2.0, incluso nell'immagine CentOS-HPC.
Specifico per HC44
La macchina virtuale HC44 è un processore Intel Skylake a due socket, di conseguenza, se possibile, è consigliabile usare un compilatore Intel. Se l'applicazione che si sta compilando è vincolata alla virgola mobile e si sospetta che le operazioni di moltiplicazione e addizione combinate dominino le operazioni a virgola mobile, è possibile provare ad abilitare le istruzioni di AVX 512. A tale scopo, aggiungere questi flag di compilazione:
-O3 -xHost -xCORE-AVX512
Specifico per HB120_v2 e HB60
I compilatori Intel vengono eseguiti correttamente su processori AMD EPYC. Se l'applicazione non usa in modo intensivo la virgola mobile, è possibile abilitare AVX2 con i flag di compilazione seguenti:
-O3 --march=core-avx2
Il sistema AMD Optimizing Compiler C/C++ (AOCC) è specificamente ottimizzato per i processori AMD e può migliorare le prestazioni dei dispositivi AMD.
Nota
I compilatori AOCC sono meno diffusi rispetto a quelli GCC e Intel. Alcune applicazioni potrebbero non essere compilate se non si apportano alcune modifiche.
Considerazioni sulle librerie numeriche
Diverse applicazioni HPC includono dipendenze con le librerie Basic Linear Algebra Subprograms (BLAS), Linear Algebra PACKage (LAPACK) e Fastest Fourier Transform in the West (FFTW). Queste operazioni numeriche possono costituire una percentuale significativa delle operazioni a virgola mobile totali. È preferibile usare le versioni ottimizzate di queste librerie, invece di implementazioni di riferimento non ottimizzate.
Specifico per HC44
Le librerie BLAS, LAPACK e FFTW ottimizzate per i processori Intel sono contenute nella libreria Intel Math Kernel Library (MKL). L'ambiente MKL include script per compilare wrapper FFTW, quindi è possibile accedere alla libreria Intel FFT ottimizzata tramite l'API FFTW.
Specifico per HB120_v2 e HB60
AMD Optimizing CPU Libraries (AMD-AOCL) contiene una libreria BLAS ottimizzata (AMD BLIS), una LAPACK ottimizzata (AMD libFLAME) e una libreria FFTW ottimizzata (AMD FFTW). Queste librerie ottimizzate sono disponibili anche nell'immagine CentOS-HPC 7.8+ di Azure Marketplace.