Compiladores e bibliotecas numéricas

Concluído

Considerações sobre imagens HPC

A imagem HPC recomendada para criar e executar aplicativos firmemente acoplados é a imagem 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 definidos mais altos, bibliotecas de passagem de mensagens (MPI) (como HPCX, OpenMPI e Intel MPI) e bibliotecas de CPU otimizadas para AMD (AOCL). Todas as bibliotecas MPI e bibliotecas numéricas estão disponíveis através de arquivos de módulo de ambiente. Você pode criar 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 do compilador

Todos os compiladores populares devem funcionar em todas as VMs HPC do Azure. Se as instruções de compilação de um aplicativo recomendarem um compilador específico e sinalizadores de compilador, tente isso primeiro antes de tentar algumas outras otimizações do compilador. Para processadores AMD EPYC (por exemplo: HB120_v2 e HB60), você precisa usar um compilador relativamente novo para garantir que ele ofereça suporte a otimizações para essa arquitetura. Para o GCC, você deve usar pelo menos a versão 7.4 ou posterior. Se possível, use o GCC 9.2.0, que está incluído na imagem do CentOS-HPC.

Específico para HC44

A VM HC44 é um processador Intel Skylake de dois soquetes, portanto, recomendamos o uso de um compilador Intel, se possível. Se a aplicação que está a compilar estiver ligada a um ponto flutuante e suspeitar que as operações de multiplicação-adição fundidas dominam as operações de ponto flutuante, pode tentar ativar 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 Intel têm um bom desempenho nos processadores AMD EPYC. Se o seu aplicativo tiver uso intensivo de ponto flutuante, você poderá habilitar o AVX2 com os seguintes sinalizadores de compilação:

-O3 --march=core-avx2

O AMD Optimizing Compiler Suite (AOCC) é especialmente ajustado para processadores AMD e pode melhorar o desempenho em dispositivos AMD.

Nota

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 bibliotecas numéricas

Várias aplicações HPC têm dependências em Subprogramas de Álgebra Linear Básica (BLAS), Álgebra Linear PACKage (LAPACK) e Transformada de Fourier Mais Rápida no Oeste (FFTW). Estas operações numéricas podem ser uma percentagem significativa do total de operações de vírgula flutuante. Espera-se que você use versões ajustadas dessas bibliotecas em vez de implementações de referência desajustadas.

Específico para HC44

As melhores bibliotecas BLAS, LAPACK e FFTW ajustadas para processadores Intel estão contidas na Intel Math Kernel Library (MKL). O ambiente MKL tem scripts para construir wrappers FFTW, para que você possa acessar a biblioteca Intel FFT ajustada através da API FFTW.

Específico para HB120_v2 e HB60

As bibliotecas AMD Optimizing CPU (AMD-AOCL) contêm uma biblioteca BLAS ajustada (AMD BLIS), um LAPACK ajustado (AMD libFLAME) e uma biblioteca FFTW ajustada (AMD FFTW). Essas bibliotecas ajustadas também estão disponíveis na imagem do CentOS-HPC 7.8+ no Azure Marketplace.