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:managedkoristi semem: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).