Иди на текст

Изградња уз коришћење 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).

Без MPI

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

Са MPI

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <број процеса> /path/to/FrontISTR/build/fistr1/fistr1 -t 8
AI-assisted translation May contain errors Official docs Status