Kihagyás

Fordítás GPU-támogatással

A FrontISTR az NVIDIA HPC SDK OpenACC funkciójával GPU-kon is futtatható. Ez az oldal ismerteti, hogyan fordítható le a FrontISTR engedélyezett GPU-támogatással, és hogyan futtatható.

Az előfeltételként szükséges könyvtárakról lásd a Kötelező és opcionális függőségek részt.

Fordítási eljárás

Használja az NVIDIA HPC SDK fordítóit (nvc, nvc++ és nvfortran). HPC-fürtkörnyezetben a fordítás előtt az adott környezet kézikönyve szerint be kell tölteni az NVIDIA HPC SDK-t (például module load nvhpc).

Az olyan opcionális könyvtárak, mint a METIS, a MUMPS és az MKL nem támogatják a GPU-kat, ezért az alábbi parancspéldákban le vannak tiltva (például WITH_METIS=OFF).

A Fordítás CMake használatával részben leírtak szerint, ha az NVIDIA HPC SDK (nvc, nvc++, nvfortran) van megadva fordítóként, a CMakeLists.txt a -gpu=ccnative,mem:managed beállítást alkalmazza. A ccnative olyan opció, amely automatikusan felismeri a fordítási környezet GPU-ját és kiválasztja az optimális célarchitektúrát, így környezetenként nincs szükség kézi módosításra. A mem: opció a GPU-memória kezelésének módját adja meg; azért szükséges, mert a FrontISTR GPU-implementációja egységes memóriát (Unified Memory) feltételez. A mem:managed az alapértelmezett beállítás olyan általános környezetekben, ahol a CPU és a GPU külön memóriával rendelkezik.

Megjegyzés: Olyan architektúrákon, mint a Miyabi (GH200), ahol a CPU és a GPU NVLinken keresztül integrált, a mem:managed helyett mem:unified használatos; módosítsa a beállítást az alkalmazott környezetnek megfelelően (-gpu=ccnative,mem:unified).

OpenACC + OpenMP (MPI nélkül)

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 használatakor az MPI-burkoló fordítókat (például mpicc) úgy kell beállítani, hogy belsőleg az NVIDIA HPC SDK fordítóit (például nvc) hívják meg. Sok HPC-fürtkörnyezetben az NVIDIA HPC SDK és az MPI-könyvtárak module load jellegű parancsokkal történő betöltése automatikusan biztosítja ezt a konfigurációt. Az ajánlott verziók és betöltési eljárások azonban környezetenként eltérnek, ezért a részletekért tekintse meg az adott környezet felhasználói kézikönyvét vagy egyéb dokumentációját.

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

Futtatás

A GPU-s fordítás futtatási eljárása alapvetően megegyezik a CPU-s fordításéval. Az általános futtatási eljárásokat lásd a Futtatási útmutatóban.

Profilozás

A profilozási adatok az NVIDIA Nsight Systems (nsys) használatával gyűjthetők.

MPI nélkül

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

MPI-vel

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <folyamatszám> /path/to/FrontISTR/build/fistr1/fistr1 -t 8