Zostavenie s podporou GPU¶
FrontISTR je možné spúšťať na GPU pomocou funkcionality OpenACC zo súpravy NVIDIA HPC SDK. Táto stránka opisuje postup zostavenia s povolenou podporou GPU a spôsob spustenia.
Požadované knižnice sú uvedené v časti Povinné a voliteľné závislosti.
Postup zostavenia¶
Použite kompilátory NVIDIA HPC SDK (nvc, nvc++, nvfortran). V prostredí HPC klastra je pred zostavením potrebné načítať NVIDIA HPC SDK podľa dokumentácie daného prostredia (napríklad module load nvhpc).
Voliteľné knižnice, ako sú METIS, MUMPS a MKL, nepodporujú GPU, preto sú v nasledujúcich príkladoch príkazov vypnuté (napríklad WITH_METIS=OFF).
Ako je uvedené v časti Postup zostavenia pomocou CMake, keď sa ako kompilátory určia nástroje NVIDIA HPC SDK (nvc, nvc++, nvfortran), v súbore CMakeLists.txt sa nastaví -gpu=ccnative,mem:managed. Voľba ccnative automaticky zistí GPU v prostredí zostavenia a vyberie optimálny cieľ, takže nie sú potrebné ručné úpravy pre jednotlivé prostredia. Voľba mem: určuje spôsob správy pamäte GPU a je povinná, pretože implementácia GPU vo FrontISTR predpokladá Unified Memory. mem:managed je predvolené nastavenie pre bežné prostredia, v ktorých majú CPU a GPU oddelenú pamäť.
Poznámka: Na architektúrach, ako je Miyabi (GH200), kde sú CPU a GPU prepojené prostredníctvom NVLinku v zjednotenom pamäťovom prostredí, sa namiesto
mem:managedpoužívamem:unified; nastavenie preto upravte podľa používaného prostredia (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (bez 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¶
Pri použití MPI musia byť obalové kompilátory MPI (napríklad mpicc) nakonfigurované tak, aby interne volali kompilátory NVIDIA HPC SDK (napríklad nvc). V mnohých prostrediach HPC klastrov sa takáto konfigurácia vytvorí automaticky po načítaní NVIDIA HPC SDK a knižníc MPI príkazmi, ako je module load. Odporúčané verzie a postupy načítania sa však medzi prostrediami líšia, preto si podrobnosti pozrite v používateľskej príručke príslušného prostredia.
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
Spustenie¶
Postup spustenia zostavenia pre GPU sa v zásade nelíši od zostavenia pre CPU. Všeobecný postup spustenia nájdete v Príručke spustenia.
Profilovanie¶
Profilovacie údaje možno zhromažďovať pomocou NVIDIA Nsight Systems (nsys).