Сборка с использованием GPU¶
FrontISTR может выполняться на GPU с использованием возможностей OpenACC из NVIDIA HPC SDK. На этой странице описаны сборка FrontISTR с включённой поддержкой 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; она обязательна, поскольку реализация FrontISTR для GPU предполагает использование 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 (например, 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).