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:managedhelyettmem:unifiedhaszná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.