Изградња уз коришћење GPU-а¶
FrontISTR може да се извршава на GPU-у користећи OpenACC функције NVIDIA HPC SDK-а. Ова страница описује поступак изградње са омогућеним GPU-ом и начин извршавања.
За предусловне библиотеке погледајте Обавезне и опционе зависне библиотеке.
Поступак изградње¶
Користе се компајлери NVIDIA HPC SDK-а (nvc, nvc++, nvfortran). У HPC кластерском окружењу, пре изградње потребно је учитати NVIDIA HPC SDK у складу са упутством тог окружења (на пример: module load nvhpc).
Опционе библиотеке као што су METIS, MUMPS и MKL не подржавају GPU, па су у доњем примеру команде онемогућене (WITH_METIS=OFF итд.).
Као што је описано у Поступку изградње помоћу CMake-а, када се као компајлери зада NVIDIA HPC SDK (nvc, nvc++, nvfortran), у CMakeLists.txt се поставља -gpu=ccnative,mem:managed. ccnative је опција која аутоматски детектује GPU у окружењу изградње и бира оптимални циљ, тако да ручна измена за свако окружење није потребна. mem: је опција која одређује начин руковања GPU меморијом; пошто GPU имплементација FrontISTR-а претпоставља Unified Memory, ова опција је обавезна. mem:managed је подразумевано подешавање за уобичајена окружења у којима CPU и GPU имају одвојене меморије.
Напомена: На архитектурама као што је Miyabi (GH200), где су CPU и GPU интегрисани преко NVLink-а, уместо
mem:managedкористи сеmem:unified, па подешавање треба изменити у складу са окружењем (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (без MPI)¶
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, MPI wrapper компајлер (mpicc итд.) мора бити конфигурисан тако да интерно позива NVIDIA HPC SDK компајлер (nvc итд.). У HPC кластерским окружењима, када се NVIDIA HPC SDK и MPI библиотека учитају командом као што је module load, та конфигурација се често поставља аутоматски; међутим, препоручене верзије и поступак учитавања зависе од окружења, па за детаље погледајте корисничко упутство одговарајућег окружења.
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
Начин извршавања¶
Поступак извршавања GPU изградње у основи је исти као за CPU. За општи поступак извршавања погледајте Водич за извршавање.
Профилисање¶
Подаци за профилисање могу се прикупити помоћу NVIDIA Nsight Systems (nsys).