Preskočiť na obsah

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:managed používa mem: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).

Bez MPI

nsys profile -t cuda -s none -o profile_result /path/to/FrontISTR/build/fistr1/fistr1

S MPI

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <pocet_procesov> /path/to/FrontISTR/build/fistr1/fistr1 -t 8
AI-assisted translation May contain errors Official docs Status