Přeskočit obsah

Sestavení s podporou GPU

FrontISTR může běžet na GPU s využitím funkcí OpenACC z NVIDIA HPC SDK. Tato stránka popisuje sestavení FrontISTR se zapnutou podporou GPU a jeho spuštění.

Požadované knihovny viz Povinné a volitelné závislosti.

Postup sestavení

Použijte kompilátory NVIDIA HPC SDK (nvc, nvc++ a nvfortran). V prostředí HPC clusteru je nutné před sestavením načíst NVIDIA HPC SDK podle příručky daného prostředí (například module load nvhpc).

Volitelné knihovny, například METIS, MUMPS a MKL, GPU nepodporují, proto jsou v níže uvedených příkladech příkazů zakázány (například WITH_METIS=OFF).

Jak je popsáno v části Sestavení pomocí CMake, při zadání NVIDIA HPC SDK (nvc, nvc++, nvfortran) jako kompilátorů se v CMakeLists.txt nastaví -gpu=ccnative,mem:managed. ccnative je volba, která automaticky detekuje GPU v prostředí sestavení a vybere optimální cíl, takže pro jednotlivá prostředí nejsou nutné ruční změny. mem: určuje způsob práce s pamětí GPU; tato volba je nutná, protože implementace GPU ve FrontISTR předpokládá Unified Memory. mem:managed je výchozí nastavení pro běžná prostředí, v nichž mají CPU a GPU oddělenou paměť.

Poznámka: Na architekturách, jako je Miyabi (GH200), kde jsou CPU a GPU propojeny pomocí NVLink, se místo mem:managed používá mem:unified; nastavení změňte podle používaného prostředí (-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

Při použití MPI musí být obalové kompilátory MPI (například mpicc) nakonfigurovány tak, aby interně volaly kompilátory NVIDIA HPC SDK (například nvc). V mnoha prostředích HPC clusterů toto nastavení zajistí automaticky načtení NVIDIA HPC SDK a knihoven MPI pomocí příkazů, jako je module load. Doporučené verze a postup načítání se však liší podle prostředí, proto podrobnosti naleznete v uživatelské příručce nebo jiné dokumentaci konkrétního prostředí.

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

Spuštění

Postup spuštění sestavení pro GPU je v zásadě stejný jako u sestavení pro CPU. Obecný postup spuštění viz Průvodce spuštěním.

Profilování

Profilovací data lze shromažďovat pomocí 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 <počet_procesů> /path/to/FrontISTR/build/fistr1/fistr1 -t 8
AI-assisted translation May contain errors Official docs Status