Вместо вступления
GROMACS - свободно распространяемый софт для моделирования молекулярных и физических процессов. Чтобы получить максимальную производительность от GROMACS, нужно собирать его самостоятельно, выбирая из множества флагов и опций. Статья призвана показать усреднённый вариант сборки для видеокарт Nvidia, а также проверку софта на работоспособность и производительность.
Системные требования
- Видеокарта Nvidia с поддержкой архитектуры CUDA
- ОС 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