Kääntäminen GPU-tuella¶
FrontISTR voi käyttää GPU:ita NVIDIA HPC SDK:n OpenACC-toiminnallisuuden avulla. Tällä sivulla kuvataan FrontISTR:n kääntäminen GPU-tuki käyttöön otettuna sekä sen suorittaminen.
Edellytyskirjastot on kuvattu kohdassa Pakolliset ja valinnaiset riippuvuudet.
Kääntämismenettely¶
Käytä NVIDIA HPC SDK:n kääntäjiä (nvc, nvc++ ja nvfortran). HPC-klusteriympäristössä NVIDIA HPC SDK on ladattava ennen kääntämistä ympäristön käyttöohjeen mukaisesti (esimerkiksi module load nvhpc).
Valinnaiset kirjastot, kuten METIS, MUMPS ja MKL, eivät tue GPU:ita, joten ne poistetaan käytöstä alla olevissa komentoesimerkeissä (esimerkiksi WITH_METIS=OFF).
Kuten kohdassa Kääntäminen CMake-ohjelmalla kuvataan, kun kääntäjiksi määritetään NVIDIA HPC SDK (nvc, nvc++, nvfortran), CMakeLists.txt asettaa valinnan -gpu=ccnative,mem:managed. ccnative tunnistaa automaattisesti käännösympäristön GPU:n ja valitsee optimaalisen kohteen, joten ympäristökohtaisia manuaalisia muutoksia ei tarvita. mem: määrittää GPU-muistin käsittelytavan; se on pakollinen, koska FrontISTR:n GPU-toteutus olettaa Unified Memory -muistin. mem:managed on oletusasetus yleisissä ympäristöissä, joissa CPU:lla ja GPU:lla on erillinen muisti.
Huomautus: Miyabin (GH200) kaltaisissa arkkitehtuureissa, joissa CPU ja GPU on yhdistetty NVLinkin kautta, käytetään
mem:managed-asetuksen sijastamem:unified-asetusta; muuta asetus käytettävän ympäristön mukaan (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (ilman MPI:tä)¶
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¶
MPI:tä käytettäessä MPI-kääntäjäkääreet (kuten mpicc) on määritettävä kutsumaan sisäisesti NVIDIA HPC SDK -kääntäjiä (kuten nvc). Monissa HPC-klusteriympäristöissä NVIDIA HPC SDK:n ja MPI-kirjastojen lataaminen esimerkiksi module load -komennoilla muodostaa tämän määrityksen automaattisesti. Suositellut versiot ja latausmenettelyt vaihtelevat kuitenkin ympäristöittäin, joten katso yksityiskohdat kyseisen ympäristön käyttöoppaasta tai muusta dokumentaatiosta.
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
Suoritus¶
GPU-käännöksen suoritusmenettely on periaatteessa sama kuin CPU-käännöksen. Yleiset suoritusmenettelyt ovat Suoritusoppaassa.
Profilointi¶
Profilointitietoja voidaan kerätä NVIDIA Nsight Systems (nsys) -ohjelmalla.