Translation update pending
The Serbian translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.
Изградња уз коришћење 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
Без OpenACC-а (CPU верзија)¶
Да бисте изградили CPU верзију помоћу NVIDIA HPC SDK компајлера без OpenACC-а, задајте -DNVHPC_NO_ACC=ON. У том случају се -acc, -Minfo=accel и -gpu=ccnative,mem:managed не постављају. Ову конфигурацију користите при поређењу резултата са GPU верзијом изграђеном истим компајлерима.
mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
-DNVHPC_NO_ACC=ON \
-DWITH_MPI=OFF -DWITH_OPENMP=ON \
..
make -j
Начин извршавања¶
Поступак извршавања GPU изградње у основи је исти као за CPU. За општи поступак извршавања погледајте Водич за извршавање.
Профилисање¶
Подаци за профилисање могу се прикупити помоћу NVIDIA Nsight Systems (nsys).