Bygga med GPU-stöd¶
FrontISTR kan köras på GPU:er med OpenACC-funktionaliteten i NVIDIA HPC SDK. Den här sidan beskriver hur FrontISTR byggs med aktiverat GPU-stöd och hur det körs.
För nödvändiga bibliotek, se Obligatoriska och valfria beroenden.
Byggprocedur¶
Använd kompilatorerna i NVIDIA HPC SDK (nvc, nvc++ och nvfortran). I en HPC-klustermiljö måste NVIDIA HPC SDK läsas in enligt miljöns manual före byggning (till exempel module load nvhpc).
Valfria bibliotek som METIS, MUMPS och MKL stöder inte GPU:er och inaktiveras därför i kommandoexemplen nedan (till exempel WITH_METIS=OFF).
Som beskrivs i Bygga med CMake sätts -gpu=ccnative,mem:managed i CMakeLists.txt när NVIDIA HPC SDK (nvc, nvc++, nvfortran) anges som kompilatorer. ccnative är ett alternativ som automatiskt detekterar GPU:n i byggmiljön och väljer ett optimalt mål, så inga manuella ändringar krävs för varje miljö. mem: är ett alternativ som anger hur GPU-minnet hanteras; det krävs eftersom FrontISTR:s GPU-implementering förutsätter Unified Memory. mem:managed är standardinställningen för vanliga miljöer där CPU och GPU har separata minnen.
Obs: På arkitekturer som Miyabi (GH200), där CPU och GPU är integrerade via NVLink, används
mem:unifiedi stället förmem:managed; ändra inställningen efter den aktuella miljön (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (utan 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¶
När MPI används måste MPI-wrapperkompilatorerna (som mpicc) konfigureras så att de internt anropar kompilatorerna i NVIDIA HPC SDK (som nvc). I många HPC-klustermiljöer erhålls denna konfiguration automatiskt när NVIDIA HPC SDK och MPI-biblioteken läses in med kommandon som module load. Rekommenderade versioner och inläsningsprocedurer varierar dock mellan miljöer, så se respektive miljös användarmanual eller annan dokumentation för detaljer.
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
Körning¶
Körproceduren för ett GPU-bygge är i grunden densamma som för ett CPU-bygge. För allmänna körprocedurer, se Körguiden.
Profilering¶
Profileringsdata kan samlas in med NVIDIA Nsight Systems (nsys).