Compiladores e bibliotecas numéricas
Considerações sobre imagem de HPC
A imagem de HPC recomendada para criação e execução de aplicativos firmemente acoplados é a CentOS-HPC 7.8+, disponível no Azure Marketplace. Esta imagem vem pré-instalada com o Mellanox Openfabrics Enterprise Distribution (MOFED). A imagem apresenta limites de conjunto mais altos, bibliotecas de MPI (Interface de Passagem de Mensagem), como HPCX, OpenMPI e Intel MPI, e AOCL (AMD-optimized CPU Libraries). Todas as bibliotecas numéricas e de MPI estão disponíveis por meio de arquivos de módulo de ambiente. Você pode criar a sua própria imagem HPC usando o construtor de imagens do Azure ou o HashiCorp Packer, mas precisa instalar o MOFED para acessar a rede InfiniBand.
Considerações sobre o compilador
Todos os compiladores populares devem funcionar em todas as VMs de HPC do Azure. Se as instruções de compilação de um aplicativo recomendam um compilador específico e sinalizadores de compilador, tente aplicar essas recomendações antes de tentar outras otimizações de compilador. Para processadores AMD EPYC (por exemplo: HB120_v2 e HB60), use um compilador relativamente novo para garantir que ele dê suporte às otimizações dessa arquitetura. Para o GCC, use pelo menos a versão 7.4 ou posterior. Se possível, use o GCC 9.2.0, que está incluído na imagem CentOS-HPC.
Específico para HC44
A VM HC44 é um processador Intel Skylake de dois soquetes. Portanto, recomendamos usar um compilador da Intel, se possível. Se o aplicativo que você está compilando estiver associado ao ponto flutuante e você suspeitar que as operações de multiplicação-adição fundidas dominam as operações de ponto flutuante, você pode tentar habilitar as instruções do AVX 512. Para fazer isso, adicione estes sinalizadores de compilação:
-O3 -xHost -xCORE-AVX512
Específico para HB120_v2 e HB60
Os compiladores da Intel têm um bom desempenho nos processadores AMD EPYC. Se o seu aplicativo fizer uso intensivo de ponto flutuante, você poderá habilitar o AVX2 com seguintes os sinalizadores de compilação:
-O3 --march=core-avx2
O Pacote do AOCC (AMD Optimizing Compiler) é especialmente ajustado para processadores e dispositivos AMD, podendo melhorar seu desempenho.
Observação
Os compiladores AOCC não são tão populares quanto os compiladores GCC e Intel. Alguns aplicativos podem não ser compilados sem algumas modificações.
Considerações sobre a biblioteca numérica
Vários aplicativos de HPC têm dependências de BLAS (Basic Linear Algebra Subprograms), LAPACK (Linear Algebra PACKage) e FFTW (Fastest Fourier Transform in the West). Essas operações numéricas podem ser uma porcentagem significativa das operações de ponto flutuante total. Espera-se que você use versões otimizadas dessas bibliotecas, em vez de implementações de referência não otimizadas.
Específico para HC44
As bibliotecas BLAS, LAPACK e FFTW mais ajustadas para processadores Intel estão contidas na Intel Math Kernel Library (MKL). O ambiente MKL tem scripts para criar wrappers da FFTW, para que você possa acessar a biblioteca FFT da Intel ajustada por meio da API da FFTW.
Específico para HB120_v2 e HB60
As AOCL da AMD (AMD Optimizing CPU Libraries) contêm uma biblioteca BLAS (AMD BLIS), uma LAPACK (AMD libFLAME) e uma FFTW (AMD FFTW) otimizadas. Essas bibliotecas otimizadas também estão disponíveis na imagem CentOS-HPC 7.8+ no Azure Marketplace.