Bygning med GPU-understøttelse¶
FrontISTR kan køre på GPU'er ved hjælp af OpenACC-funktionaliteten i NVIDIA HPC SDK. Denne side beskriver, hvordan FrontISTR bygges med GPU-understøttelse, og hvordan det køres.
Se Obligatoriske og valgfrie afhængigheder for de nødvendige biblioteker.
Byggeprocedure¶
Brug compilerne i NVIDIA HPC SDK (nvc, nvc++, nvfortran). I et HPC-klyngemiljø skal NVIDIA HPC SDK indlæses før bygningen i henhold til miljøets manual (f.eks. module load nvhpc).
Valgfrie biblioteker som METIS, MUMPS og MKL understøtter ikke GPU, og de er derfor deaktiveret i kommandoeksemplerne nedenfor (f.eks. WITH_METIS=OFF).
Som beskrevet i Bygning med CMake, sættes -gpu=ccnative,mem:managed i CMakeLists.txt, når NVIDIA HPC SDK (nvc, nvc++, nvfortran) angives som compilere. ccnative registrerer automatisk GPU'en i byggemiljøet og vælger det optimale mål, så manuelle ændringer for hvert miljø ikke er nødvendige. mem: angiver, hvordan GPU-hukommelsen håndteres, og er påkrævet, fordi FrontISTR's GPU-implementering forudsætter Unified Memory. mem:managed er standardindstillingen for almindelige miljøer, hvor CPU og GPU har separat hukommelse.
Note: På arkitekturer som Miyabi (GH200), hvor CPU og GPU er integreret via NVLink, bruges
mem:unifiedi stedet formem:managed; tilpas derfor indstillingen til det anvendte miljø (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (uden 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¶
Ved brug af MPI skal MPI-wrappercompilerne (f.eks. mpicc) være konfigureret til internt at kalde compilerne i NVIDIA HPC SDK (f.eks. nvc). I mange HPC-klyngemiljøer etableres denne konfiguration automatisk, når NVIDIA HPC SDK og MPI-biblioteker indlæses med kommandoer som module load. Anbefalede versioner og indlæsningsprocedurer varierer dog fra miljø til miljø, så se brugermanualen eller anden dokumentation for det pågældende miljø.
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ørsel¶
Kørselsproceduren for en GPU-bygning er grundlæggende den samme som for en CPU-bygning. Se Kørselsvejledning for den generelle kørselsprocedure.
Profilering¶
Profileringsdata kan indsamles med NVIDIA Nsight Systems (nsys).