Збирання з підтримкою 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; цей параметр потрібний, оскільки реалізація 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 (наприклад, 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).