GPU-toega ehitamine¶
FrontISTR saab töötada GPU-del, kasutades NVIDIA HPC SDK OpenACC-funktsionaalsust. Sellel lehel kirjeldatakse, kuidas ehitada FrontISTR GPU-toega ja kuidas seda käivitada.
Eeltingimusena vajalike teekide kohta vaadake jaotist Nõutavad ja valikulised sõltuvused.
Ehitamisprotseduur¶
Kasutage NVIDIA HPC SDK kompilaatoreid (nvc, nvc++ ja nvfortran). HPC-klastri keskkonnas tuleb NVIDIA HPC SDK enne ehitamist laadida vastavalt keskkonna juhendile (näiteks module load nvhpc).
Valikulised teegid, nagu METIS, MUMPS ja MKL, ei toeta GPU-sid, mistõttu on need alltoodud käsunäidetes keelatud (näiteks WITH_METIS=OFF).
Nagu kirjeldatud jaotises CMake'iga ehitamine, määratakse juhul, kui kompilaatoriteks valitakse NVIDIA HPC SDK (nvc, nvc++, nvfortran), failis CMakeLists.txt -gpu=ccnative,mem:managed. ccnative on valik, mis tuvastab automaatselt ehituskeskkonna GPU ja valib optimaalse sihtmärgi, mistõttu pole iga keskkonna jaoks käsitsi muudatusi vaja. mem: on valik, mis määrab GPU mälu käsitlemise viisi; see on vajalik, sest FrontISTR-i GPU-teostus eeldab Unified Memory kasutamist. mem:managed on vaikesäte üldistes keskkondades, kus CPU-l ja GPU-l on eraldi mälu.
Märkus: Sellistel arhitektuuridel nagu Miyabi (GH200), kus CPU ja GPU on NVLinki kaudu integreeritud, kasutatakse
mem:managedasemelmem:unified; muutke sätet vastavalt kasutatavale keskkonnale (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (ilma MPI-ta)¶
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¶
MPI kasutamisel peavad MPI wrapper-kompilaatorid (näiteks mpicc) olema seadistatud nii, et need kutsuksid sisemiselt NVIDIA HPC SDK kompilaatoreid (näiteks nvc). Paljudes HPC-klastrikeskkondades tagab NVIDIA HPC SDK ja MPI teekide laadimine selliste käskudega nagu module load selle seadistuse automaatselt. Soovitatavad versioonid ja laadimisprotseduurid on aga keskkonniti erinevad, seega vaadake üksikasju vastava keskkonna kasutusjuhendist või muust dokumentatsioonist.
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äivitamine¶
GPU-ehituse käivitamisprotseduur on põhimõtteliselt sama mis CPU-ehituse puhul. Üldisi käivitamisjuhiseid vaadake käivitusjuhendist.
Profileerimine¶
Profileerimisandmeid saab koguda NVIDIA Nsight Systemsi (nsys) abil.