Preskočiť na obsah

Translation update pending

The Slovak translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

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

Bez OpenACC (verzia pre CPU)

Ak chcete zostaviť verziu pre CPU pomocou kompilátorov NVIDIA HPC SDK bez OpenACC, zadajte -DNVHPC_NO_ACC=ON. V takom prípade sa nenastavia -acc, -Minfo=accel ani -gpu=ccnative,mem:managed. Túto konfiguráciu použite pri porovnávaní výsledkov s verziou pre GPU zostavenou rovnakými kompilátormi.

mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
  -DNVHPC_NO_ACC=ON \
  -DWITH_MPI=OFF -DWITH_OPENMP=ON \
  ..
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