Bygging med GPU-støtte¶
FrontISTR kan kjøres på GPU-er ved hjelp av OpenACC-funksjonaliteten i NVIDIA HPC SDK. Denne siden beskriver hvordan FrontISTR bygges med GPU-støtte aktivert, og hvordan det kjøres.
Se Påkrevde og valgfrie avhengigheter for bibliotekene som kreves på forhånd.
Byggeprosedyre¶
Bruk kompilatorene i NVIDIA HPC SDK (nvc, nvc++, nvfortran). I et HPC-klyngemiljø må NVIDIA HPC SDK lastes inn før bygging i henhold til miljøets dokumentasjon (for eksempel module load nvhpc).
Valgfrie biblioteker som METIS, MUMPS og MKL støtter ikke GPU, og er derfor deaktivert i kommandoeksemplene nedenfor (for eksempel WITH_METIS=OFF).
Som beskrevet i Bygging med CMake, når NVIDIA HPC SDK (nvc, nvc++, nvfortran) er angitt som kompilatorer, settes -gpu=ccnative,mem:managed i CMakeLists.txt. ccnative oppdager automatisk GPU-en i byggemiljøet og velger det optimale målet, slik at manuell tilpasning ikke er nødvendig. mem: angir hvordan GPU-minnet håndteres og er påkrevd fordi FrontISTRs GPU-implementasjon forutsetter Unified Memory. mem:managed er standardinnstillingen for vanlige miljøer der CPU og GPU har separat minne.
Merk: På arkitekturer som Miyabi (GH200), der CPU og GPU er integrert via NVLink, erstattes
mem:managedmedmem:unified. Endre innstillingen etter miljøet som brukes (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (uten 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 brukes, må MPI-wrapperkompilatorene (for eksempel mpicc) være konfigurert slik at de internt kaller kompilatorene i NVIDIA HPC SDK (for eksempel nvc). I mange HPC-klyngemiljøer opprettes denne konfigurasjonen automatisk når NVIDIA HPC SDK og MPI-bibliotekene lastes inn med kommandoer som module load. Anbefalte versjoner og innlastingsprosedyrer varierer imidlertid mellom miljøer, så se brukerdokumentasjonen for det aktuelle miljøet for 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
Kjøring¶
Kjøreprosedyren for en GPU-bygging er i hovedsak den samme som for en CPU-bygging. Se Kjøringsveiledningen for generelle kjøreprosedyrer.
Profilering¶
Profileringsdata kan samles inn med NVIDIA Nsight Systems (nsys).