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:managedpouží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).