Keri sisuni

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:managed asemel mem: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.

Ilma MPI-ta

nsys profile -t cuda -s none -o profile_result /path/to/FrontISTR/build/fistr1/fistr1

MPI-ga

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <number_of_processes> /path/to/FrontISTR/build/fistr1/fistr1 -t 8
AI-assisted translation May contain errors Official docs Status