Compilació amb GPU¶
FrontISTR es pot executar en una GPU mitjançant les funcions OpenACC del NVIDIA HPC SDK. Aquesta pàgina descriu el procediment de compilació amb la GPU habilitada i la manera d'executar-lo.
Per a les biblioteques necessàries, consulteu Biblioteques dependents obligatòries i opcionals.
Procediment de compilació¶
Utilitzeu els compiladors del NVIDIA HPC SDK (nvc, nvc++, nvfortran). En un entorn de clúster HPC, abans de compilar cal carregar el NVIDIA HPC SDK seguint el manual de l'entorn (per exemple: module load nvhpc).
Com que les biblioteques opcionals com METIS, MUMPS i MKL no són compatibles amb GPU, als exemples d'ordres següents estan desactivades (per exemple, WITH_METIS=OFF).
Tal com s'explica a Procediment de compilació amb CMake, quan s'especifica el NVIDIA HPC SDK (nvc, nvc++, nvfortran) com a compilador, a CMakeLists.txt es configura -gpu=ccnative,mem:managed. ccnative és una opció que detecta automàticament la GPU de l'entorn de compilació i selecciona l'objectiu òptim, de manera que no cal fer canvis manuals per a cada entorn. mem: és una opció que especifica com es gestiona la memòria de la GPU; és obligatòria perquè la implementació GPU de FrontISTR pressuposa Unified Memory. mem:managed és la configuració predeterminada per als entorns habituals en què la CPU i la GPU tenen memòries separades.
Nota: En arquitectures com Miyabi (GH200), on la CPU i la GPU estan integrades mitjançant NVLink, s'utilitza
mem:unifieden lloc demem:managed; modifiqueu la configuració segons l'entorn utilitzat (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (sense MPI)¶
mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
-DWITH_MPI=OFF -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
OpenACC + OpenMP + MPI¶
Quan s'utilitza MPI, els compiladors d'embolcall MPI (com mpicc) han d'estar configurats per invocar internament els compiladors del NVIDIA HPC SDK (com nvc). En molts entorns de clúster HPC, en carregar el NVIDIA HPC SDK i les biblioteques MPI amb ordres com module load, aquesta configuració s'estableix automàticament. Tanmateix, les versions recomanades i els procediments de càrrega varien segons l'entorn; consulteu el manual d'usuari o la documentació de cada entorn per obtenir-ne els detalls.
mkdir build
cd build
CC=mpicc CXX=mpic++ FC=mpif90 cmake \
-DWITH_MPI=ON -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
Mètode d'execució¶
El procediment d'execució d'una compilació GPU és bàsicament el mateix que per a CPU. Per al procediment general d'execució, consulteu la Guia d'execució.
Perfilatge¶
Es poden recopilar dades de perfilatge amb NVIDIA Nsight Systems (nsys).