Kujenga kwa kutumia GPU¶
FrontISTR inaweza kutekelezwa kwenye GPU kwa kutumia kipengele cha OpenACC cha NVIDIA HPC SDK. Ukurasa huu unaeleza utaratibu wa kujenga FrontISTR ikiwa GPU imewezeshwa na jinsi ya kuiendesha.
Kwa maktaba zinazohitajika, rejelea Maktaba tegemezi za lazima na za hiari.
Utaratibu wa kujenga¶
Tumia vikompaila vya NVIDIA HPC SDK (nvc, nvc++, nvfortran). Katika mazingira ya klasta ya HPC, NVIDIA HPC SDK lazima ipakiwe kabla ya kujenga kulingana na mwongozo wa mazingira hayo (kwa mfano: module load nvhpc).
Maktaba za hiari kama METIS, MUMPS na MKL hazitumii GPU, kwa hiyo zimezimwa katika mifano ya amri iliyo hapa chini (WITH_METIS=OFF, n.k.).
Kama ilivyoelezwa katika Utaratibu wa kujenga kwa CMake, NVIDIA HPC SDK (nvc, nvc++, nvfortran) inapochaguliwa kama vikompaila, -gpu=ccnative,mem:managed huwekwa katika CMakeLists.txt. ccnative ni chaguo linalotambua GPU ya mazingira ya kujenga kiotomatiki na kuchagua lengo linalofaa, hivyo hakuna haja ya kubadilisha mipangilio kwa mkono kwa kila mazingira. mem: hubainisha jinsi kumbukumbu ya GPU inavyoshughulikiwa; utekelezaji wa GPU wa FrontISTR unategemea Unified Memory, kwa hiyo chaguo hili ni la lazima. mem:managed ni mpangilio chaguo-msingi kwa mazingira ya kawaida ambako CPU na GPU zina kumbukumbu tofauti.
Kumbuka: Katika usanifu kama Miyabi (GH200), ambako CPU na GPU zimeunganishwa kupitia NVLink,
mem:managedhutumika badala yamem:unified; kwa hiyo badilisha kulingana na mazingira yanayotumika (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (bila 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¶
Unapotumia MPI, vikompaila vya wrapper vya MPI (mpicc, n.k.) lazima viwe vimesanidiwa kuita ndani vikompaila vya NVIDIA HPC SDK (nvc, n.k.). Katika mazingira mengi ya klasta ya HPC, usanidi huu hufanyika kiotomatiki unapopakia NVIDIA HPC SDK na maktaba za MPI kwa amri kama module load. Hata hivyo, matoleo yanayopendekezwa na utaratibu wa kupakia hutofautiana kulingana na mazingira, kwa hiyo rejelea mwongozo wa mtumiaji wa mazingira husika kwa maelezo.
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
Jinsi ya kutekeleza¶
Utaratibu wa kuendesha build ya GPU kimsingi ni sawa na wa CPU. Kwa utaratibu wa jumla wa utekelezaji, rejelea Mwongozo wa utekelezaji.
Uchanganuzi wa utendaji¶
Data ya profiling inaweza kukusanywa kwa kutumia NVIDIA Nsight Systems (nsys).