컴파일러 및 수치 라이브러리

완료됨

HPC 이미지 고려 사항

밀결합된 애플리케이션을 빌드하고 실행하는 데 사용하는 권장 HPC 이미지는 Azure Marketplace에서 제공되는 CentOS-HPC 7.8 이상의 이미지입니다. 이 이미지는 MOFED(Mellanox Openfabrics Enterprise Distribution)가 포함된 상태로 미리 설치되어 제공됩니다. 해당 이미지는 더 높은 설정 한도, MPI(메시지 전달) 라이브러리(예: HPCX, OpenMPI, Intel MPI), AOCL(AMD 최적화 CPU 라이브러리)을 제공합니다. 모든 MPI 라이브러리 및 수치 라이브러리는 환경 모듈 파일을 통해 사용할 수 있습니다. Azure 이미지 작성기나 HashiCorp Packer를 사용하여 사용자 고유의 HPC 이미지를 만들 수 있지만, InfiniBand 네트워크에 액세스하려면 MOFED를 설치해야 합니다.

컴파일러 고려 사항

모든 인기 있는 컴파일러는 모든 Azure HPC VM에서 작동합니다. 애플리케이션의 빌드 명령에서 특정 컴파일러 및 컴파일러 플래그를 권장하는 경우 먼저 해당 작업을 시도한 뒤 다른 컴파일러 최적화를 시도하세요. AMD EPYC 프로세서(예: HB120_v2, HB60)의 경우 이 아키텍처에 대한 최적화를 지원하는지 확인하려면 상대적으로 최신인 컴파일러를 사용해야 합니다. 버전 7.4 이상의 GCC를 사용해야 합니다. 가능하면 CentOS-HPC 이미지에 포함된 GCC 9.2.0을 사용합니다.

HC44 관련

HC44 VM은 2소켓 Intel Skylake 프로세서이므로 가능한 경우 Intel 컴파일러를 사용하는 것이 좋습니다. 컴파일하는 애플리케이션이 부동 소수점에 국한되고 융합된 곱셈-덧셈 연산이 주로 부동 소수점 연산인 것으로 의심되는 경우 AVX 512 명령을 사용하도록 설정해 보세요. 이를 위해 다음 컴파일 플래그를 추가합니다.

-O3 -xHost -xCORE-AVX512

HB120_v2 및 HB60 관련

Intel 컴파일러는 AMD EPYC 프로세서에서 잘 작동합니다. 애플리케이션이 부동 소수점 집약적인 경우 다음 컴파일 플래그를 사용하여 AVX2를 사용하도록 설정할 수 있습니다.

-O3 --march=core-avx2

AOCC(AMD 최적화 컴파일러 제품군)는 AMD 프로세서에 맞게 특별히 튜닝되었으며 AMD 디바이스에서 성능을 향상할 수 있습니다.

참고

AOCC 컴파일러는 GCC 및 Intel 컴파일러만큼 널리 사용되지는 않습니다. 어떤 애플리케이션은 일부 수정 없이는 컴파일되지 않을 수 있습니다.

수치 라이브러리 고려 사항

여러 개의 HPC 애플리케이션은 BLAS(Basic Linear Algebra Subprograms), LAPACK(Linear Algebra PACKage), FFTW(Fastest Fourier Transform in the West)에 종속됩니다. 이러한 수치 연산은 총 부동 소수점 연산을 백분율로 보았을 때 상당한 부분을 차지할 수 있습니다. 튜닝되지 않은 참조 구현 대신 해당 라이브러리의 튜닝된 버전을 사용해야 합니다.

HC44 관련

Intel 프로세서에 대해 가장 잘 튜닝된 BLAS, LAPACK 및 FFTW 라이브러리는 Intel MKL(수학 커널 라이브러리)에 포함되어 있습니다. MKL 환경에는 FFTW 래퍼를 빌드하기 위한 스크립트가 있으므로 FFTW API를 통해 튜닝된 Intel FFT 라이브러리에 액세스할 수 있습니다.

HB120_v2 및 HB60 관련

AMD-AOCL(AMD 최적화 CPU 라이브러리)에는 튜닝된 BLAS 라이브러리(AMD BLIS), 튜닝된 LAPACK(AMD libFLAME), 튜닝된 FFTW 라이브러리(AMD FFTW)가 포함되어 있습니다. 이러한 튜닝된 라이브러리는 Azure Marketplace의 CentOS-HPC 7.8 이상의 이미지에서도 사용할 수 있습니다.