Preskoči na sadržaj

Izgradnja s podrškom za GPU

FrontISTR se može izvoditi na GPU-u koristeći OpenACC funkcionalnost paketa NVIDIA HPC SDK. Ova stranica opisuje postupak izgradnje s omogućenom GPU podrškom i način izvođenja.

Za potrebne biblioteke pogledajte Obvezne i opcionalne zavisnosti.

Postupak izgradnje

Koristite kompajlere NVIDIA HPC SDK-a (nvc, nvc++, nvfortran). U okruženju HPC klastera prije izgradnje potrebno je učitati NVIDIA HPC SDK prema uputama za to okruženje (na primjer: module load nvhpc).

Opcionalne biblioteke kao što su METIS, MUMPS i MKL ne podržavaju GPU, pa su u primjerima naredbi u nastavku onemogućene (na primjer WITH_METIS=OFF).

Kao što je opisano u Postupku izgradnje s CMakeom, kada se za kompajlere odabere NVIDIA HPC SDK (nvc, nvc++, nvfortran), u datoteci CMakeLists.txt postavlja se -gpu=ccnative,mem:managed. ccnative automatski prepoznaje GPU u okruženju izgradnje i odabire optimalni cilj, pa ručne izmjene za pojedina okruženja nisu potrebne. mem: određuje način upravljanja GPU memorijom i obvezan je jer GPU implementacija FrontISTR-a pretpostavlja Unified Memory. mem:managed zadana je postavka za uobičajena okruženja u kojima CPU i GPU imaju odvojenu memoriju.

Napomena: Na arhitekturama kao što je Miyabi (GH200), gdje su CPU i GPU povezani putem NVLinka u objedinjeno memorijsko okruženje, umjesto mem:managed koristi se mem:unified; postavku zato prilagodite korištenom okruženju (-gpu=ccnative,mem:unified).

OpenACC + OpenMP (bez MPI-ja)

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-ja omotni MPI kompajleri (na primjer mpicc) moraju biti konfigurirani tako da interno pozivaju kompajlere NVIDIA HPC SDK-a (na primjer nvc). U mnogim okruženjima HPC klastera takva se konfiguracija automatski uspostavlja kada se NVIDIA HPC SDK i MPI biblioteke učitaju naredbama poput module load. Preporučene verzije i postupci učitavanja razlikuju se među okruženjima, pa pojedinosti potražite u korisničkom priručniku odgovarajućeg okruženja.

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

Izvođenje

Postupak izvođenja GPU izgradnje u osnovi je isti kao i za CPU izgradnju. Za opći postupak izvođenja pogledajte Vodič za izvođenje.

Profiliranje

Podaci za profiliranje mogu se prikupiti pomoću NVIDIA Nsight Systemsa (nsys).

Bez MPI-ja

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

S MPI-jem

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