Hyppää sisältöön

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 sijasta mem: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.

Ilman MPI:tä

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

MPI:n kanssa

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