Skoči na vsebino

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

Brez MPI

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

Z MPI

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