null

Как собрать GROMACS для использования с CUDA

Вместо вступления

GROMACS - свободно распространяемый софт для моделирования молекулярных и физических процессов. Чтобы получить максимальную производительность от GROMACS, нужно собирать его самостоятельно, выбирая из множества флагов и опций. Статья призвана показать усреднённый вариант сборки для видеокарт Nvidia, а также проверку софта на работоспособность и производительность.

Системные требования

  1. Видеокарта Nvidia с поддержкой архитектуры CUDA
  2. ОС Linux (в примере рассмотрена Ubuntu Server 22.04)

Сборка

Для сборки понадобятся gcc, cmake:

sudo apt install build-essential
sudo apt install cmake

CUDA устанавливается разными способами, можно воспользоваться инструкцией с официального сайта: https://developer.nvidia.com/cuda-downloads

Далее нужен MPI. Он необходим для пареллелизации задач при вычислениях на GPU. Воспользуемся Open MPI, который соберём самостоятельно: https://www.open-mpi.org/software/ompi/v4.1/. При конфигурации обязательно указываем флаг --with-cuda, а также путь  до этой самой CUDA: 

wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
tar xfz openmpi-4.1.5.tar.gz
cd openmpi-4.1.5
./configure --with-cuda=/usr/local/cuda
make -j 32 all 2>&1 | tee make.out
sudo make install 2>&1 | tee install.out
sudo ldconfig

Теперь можно приступить к сборке и установке GROMACS. В данном случае при конфигурации нужно лишь указать о необходимости поддержки MPI и CUDA, пути до них будут найдены автоматически:

wget https://ftp.gromacs.org/gromacs/gromacs-2023.2.tar.gz
tar xfz gromacs-2023.2.tar.gz
cd gromacs-2023.2
mkdir build && cd build
cmake .. -DGMX_GPU=CUDA -DGMX_MPI=on -DGMX_BUILD_OWN_FFTW=on
make -j 32
make check -j 32
sudo make install
echo "source /usr/local/gromacs/bin/GMXRC" >> ~/.bashrc
. ~/.bashrc

make check позволяет проверить, было ли всё собрано правильно. Сначала тесты долго собираются, а только потом начинают прогоняться, из-за этого некоторые могут не отработать корректно в первый раз. Если валятся 1-2 из них, можно попробовать написать make check ещё раз, это запустит тесты без пересборки.

Оно работает!

Вот так можно быстро собрать GROMACS и начать им пользоваться. Чтобы проверить программу в деле и замерить производительность, запустим бенчмарк. Взять их можно например отсюда: https://www.mpinat.mpg.de/grubmueller/bench. Перед запуском рекомендуется создать отдельную директорию и запускать GROMACS из неё, чтобы все файлы вывода оказались собраны в одном месте.

При установке с MPI бинарный файл будет называться именно gmx_mpi! Запустить бенчмарки можно разными способами:

gmx_mpi mdrun -pme gpu -update gpu -bonded gpu -s /path/to/benchmark.tpr
gmx_mpi mdrun -s /path/to/benchmark.tpr

После (возможно длительных) вычислений получаем посчитанную производительность:

               Core t (s)   Wall t (s)        (%)
       Time:      660.339       27.529     2398.7
                 (ns/day)    (hour/ns)
Performance:       62.777        0.382
Previous

Коротко о себе:

Работаю [DevOps] инженером в Tune-it.

Nothing has been found. n is 0