[mephi-hpc] Пример LAMMPS на GPU

anikeev at ut.mephi.ru anikeev at ut.mephi.ru
Wed Dec 15 17:08:00 MSK 2021


Уважаемые пользователи!

Вашему вниманию предлагается пример использования пакета молекулярной 
динамики LAMMPS с GPU-ускорителями:

Конфигурация приложения на Tensor:

anikeev at tensor:~$ source /opt/nvidia/hpc_sdk/nvvars.sh
anikeev at tensor:~$ source /opt/nvidia/hpc_sdk/nv_mpi_vars.sh
anikeev at tensor:~$ cmake -D PKG_KOKKOS=yes -D Kokkos_ARCH_SKX=yes -D 
Kokkos_ARCH_VOLTA70=yes -D Kokkos_ENABLE_CUDA=yes -D 
CMAKE_CXX_COMPILER=/mnt/pool/5/andreykv/LMP_by_anikeev/basis/lammps-29Sep2021/lib/kokkos/bin/nvcc_wrapper 
-D 
CUDAToolkit_INCLUDE_DIR=/opt/nvidia/hpc_sdk/Linux_x86_64/21.3/cuda/11.2/targets/x86_64-linux/include 
-D PKG_REAXFF=yes ../cmake

Конфигурация приложения на Basis:

anikeev at basis:~$ source /opt/nvidia/hpc_sdk/nvvars.sh
anikeev at basis:~$ source /opt/nvidia/hpc_sdk/nv_mpi_vars.s
anikeev at basis:~$ cmake -D PKG_KOKKOS=yes -D Kokkos_ARCH_ZEN2=yes -D 
Kokkos_ARCH_AMPERE80=yes -D Kokkos_ENABLE_CUDA=yes -D 
CMAKE_CXX_COMPILER=/mnt/pool/5/andreykv/LMP_by_anikeev/basis/lammps-29Sep2021/lib/kokkos/bin/nvcc_wrapper 
-D 
CUDAToolkit_INCLUDE_DIR=/opt/nvidia/hpc_sdk/Linux_x86_64/21.3/cuda/11.2/targets/x86_64-linux/include 
-D PKG_REAXFF=yes ../cmake

Собранные пакеты можно найти в директориях:

/mnt/pool/5/andreykv/LMP_by_anikeev/tensor/lammps-29Sep2021/build/lmp
/mnt/pool/5/andreykv/LMP_by_anikeev/basis/lammps-29Sep2021/build/lmp

Примеры задач можно найти в директориях:

/mnt/pool/5/andreykv/LMP_by_anikeev/tensor/reaxff_example/start.sh
/mnt/pool/5/andreykv/LMP_by_anikeev/basis/reaxff_example/start.sh

Пример стартового скрипта для одного GPU-ускорителя:

#!/bin/bash
#SBATCH --partition=gpu
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --time=10:00:00

source /opt/nvidia/hpc_sdk/nvvars.sh
source /opt/nvidia/hpc_sdk/nv_mpi_vars.sh

cd /mnt/pool/5/andreykv/LMP_by_anikeev/basis/c_pah
mpirun 
/mnt/pool/5/andreykv/LMP_by_anikeev/basis/lammps-29Sep2021/build/lmp -k 
on g 1 -sf kk -in in.reaxc.stat

Пример стартового скрипта для двух GPU-ускорителей:

#!/bin/bash
#SBATCH --partition=gpu
#SBATCH --nodes=1
#SBATCH --gres=gpu:2
#SBATCH --ntasks=2
#SBATCH --cpus-per-task=1
#SBATCH --time=10:00:00

source /opt/nvidia/hpc_sdk/nvvars.sh
source /opt/nvidia/hpc_sdk/nv_mpi_vars.sh

cd /mnt/pool/5/andreykv/LMP_by_anikeev/basis/c_pah
mpirun 
/mnt/pool/5/andreykv/LMP_by_anikeev/basis/lammps-29Sep2021/build/lmp -k 
on g 2 -sf kk -in in.reaxc.stat


На практике нужно стараться использовать минимум GPU для отдельной 
задачи. Несколько GPU в одной задаче нужно использовать, если на одном 
GPU нехватает объема видеопамяти.

Обращайтесь при возникновении вопросов по использованию GPU-ускорителей. 
Переход на GPU-ускорители сокращает не только время расчета Вашей 
задачи, но и время ожидания в очереди задач. GPU-ускоренные освобождают 
CPU ресурсы для Ваших коллег, алгоритмы которых нельзя перенести на GPU. 
Кроме того, GPU-ускоренные расчеты сокращают энергопотребление 
университета.

Напоминаю, что для векторизаованных на базе SIMD инструкций (AVX-512 
FMA, AVX-2 FMA) алгоритмов в первую очередь нужно использовать кластер 
Tensor, во вторую - кластер Cherenkov. Подавляющее большинство 
современных пакетов физического моделирования подерживают векторизацию 
за счет использования библиотек BLAS, LAPACK, FFTW, MKL.

Для невекторизованных алгоритмов нужно в первую очередь использовать 
кластер Unilcuster, во вторую - кластер Basov. Используя правильное 
аппаратное обеспечение Вы сокращает сроки ожидания для себя и коллег в 
разы.

--
С уважением,
инженер отдела UNIX-технологий НИЯУ МИФИ,
к.ф.-м.н.,
Аникеев Артем.
e-mail: anikeev at ut.mephi.ru
тел.: 8 (495) 788-56-99, доб. 8998



More information about the hpc mailing list