Gradnja s podporo za GPU¶
FrontISTR se lahko izvaja na grafičnih procesorjih z uporabo funkcionalnosti OpenACC iz NVIDIA HPC SDK. Ta stran opisuje postopek gradnje z omogočeno podporo za GPU in način izvajanja.
Za zahtevane knjižnice glejte Obvezne in izbirne odvisnosti.
Postopek gradnje¶
Uporabite prevajalnike NVIDIA HPC SDK (nvc, nvc++, nvfortran). V okolju gruče HPC je treba pred gradnjo naložiti NVIDIA HPC SDK v skladu z navodili za uporabljeno okolje (na primer module load nvhpc).
Izbirne knjižnice, kot so METIS, MUMPS in MKL, ne podpirajo GPU, zato so v spodnjih primerih ukazov onemogočene (na primer WITH_METIS=OFF).
Kot je opisano v Postopku gradnje s CMake, se ob izbiri prevajalnikov NVIDIA HPC SDK (nvc, nvc++, nvfortran) v datoteki CMakeLists.txt nastavi -gpu=ccnative,mem:managed. Možnost ccnative samodejno zazna GPU v okolju gradnje in izbere optimalni cilj, zato ročne prilagoditve za posamezna okolja niso potrebne. Možnost mem: določa način ravnanja s pomnilnikom GPU in je obvezna, ker izvedba GPU v FrontISTR predpostavlja Unified Memory. mem:managed je privzeta nastavitev za običajna okolja, v katerih imata CPU in GPU ločen pomnilnik.
Opomba: Pri arhitekturah, kot je Miyabi (GH200), kjer sta CPU in GPU prek NVLinka povezana v enotno pomnilniško okolje, se namesto
mem:manageduporabljamem:unified; nastavitev zato prilagodite uporabljenemu okolju (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (brez 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¶
Pri uporabi MPI morajo biti ovojni prevajalniki MPI (na primer mpicc) konfigurirani tako, da interno kličejo prevajalnike NVIDIA HPC SDK (na primer nvc). V številnih okoljih gruč HPC se takšna konfiguracija vzpostavi samodejno, ko z ukazi, kot je module load, naložite NVIDIA HPC SDK in knjižnice MPI. Priporočene različice in postopki nalaganja se med okolji razlikujejo, zato podrobnosti preverite v uporabniškem priročniku posameznega okolja.
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
Izvajanje¶
Postopek izvajanja gradnje za GPU se v osnovi ne razlikuje od gradnje za CPU. Za splošni postopek izvajanja glejte Vodnik za izvajanje.
Profiliranje¶
Podatke za profiliranje lahko zbirate z NVIDIA Nsight Systems (nsys).