Bouwen met GPU-ondersteuning¶
FrontISTR kan op GPU's worden uitgevoerd met de OpenACC-functionaliteit van de NVIDIA HPC SDK. Deze pagina beschrijft hoe FrontISTR met GPU-ondersteuning wordt gebouwd en uitgevoerd.
Zie Vereiste en optionele afhankelijkheden voor de vereiste bibliotheken.
Bouwprocedure¶
Gebruik de NVIDIA HPC SDK-compilers (nvc, nvc++ en nvfortran). In een HPC-clusteromgeving moet de NVIDIA HPC SDK vóór het bouwen volgens de handleiding van de omgeving worden geladen (bijvoorbeeld module load nvhpc).
Optionele bibliotheken zoals METIS, MUMPS en MKL ondersteunen geen GPU's en worden daarom in de onderstaande opdrachtvoorbeelden uitgeschakeld (bijvoorbeeld WITH_METIS=OFF).
Zoals beschreven in Bouwen met CMake, wordt wanneer de NVIDIA HPC SDK (nvc, nvc++, nvfortran) als compiler wordt opgegeven, -gpu=ccnative,mem:managed in CMakeLists.txt ingesteld. ccnative is een optie die de GPU in de bouwomgeving automatisch detecteert en het optimale doel selecteert, zodat per omgeving geen handmatige wijzigingen nodig zijn. mem: is een optie die bepaalt hoe GPU-geheugen wordt behandeld; deze is vereist omdat de GPU-implementatie van FrontISTR uitgaat van Unified Memory. mem:managed is de standaardinstelling voor algemene omgevingen waarin CPU en GPU afzonderlijk geheugen hebben.
Opmerking: Op architecturen zoals Miyabi (GH200), waar CPU en GPU via NVLink zijn geïntegreerd, wordt in plaats van
mem:managedmem:unifiedgebruikt; pas de instelling aan de gebruikte omgeving aan (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (zonder 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¶
Bij gebruik van MPI moeten de MPI-wrappercompilers (zoals mpicc) zo worden geconfigureerd dat zij intern de NVIDIA HPC SDK-compilers (zoals nvc) aanroepen. In veel HPC-clusteromgevingen wordt deze configuratie automatisch geleverd wanneer de NVIDIA HPC SDK en MPI-bibliotheken worden geladen met opdrachten zoals module load. Aanbevolen versies en laadprocedures verschillen echter per omgeving; raadpleeg daarom de gebruikershandleiding of andere documentatie van de betreffende omgeving.
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
Uitvoering¶
De uitvoeringsprocedure voor een GPU-build is in wezen dezelfde als voor een CPU-build. Zie voor algemene uitvoeringsprocedures de Uitvoeringshandleiding.
Profilering¶
Profileringsgegevens kunnen worden verzameld met NVIDIA Nsight Systems (nsys).