Компилиране на GROMACS с поддръжка на AMD графичен ускорител под CentOS 7 и Scientific Linux 7Съдържание:
1. Предварителна информацияСамо определени модели AMD Radeon графични карти/ускорители (GPU) могат да се използват ефективно с GROMACS. Повечето GPU устройства на AMD от ниския клас и дори средния клас, са практически неефективни за ускоряването на изчисленията с плаваща запетая в GROMACS (дори и изчислителните ядра на GROMACS да работят с единична точност). За да не инвестирате в ускорители, които няма да са ви от полза, задължително проверете дали избрания от вас модел AMD GPU ускорител, е доказано едективен за GROMACS, преди да го закупите. Устройствата, спрямо които е тестван GROMACS, компилиран по модела, посочен по-долу в документацията, са следните: За различка от графичните ускорители на NVidia (където libgromacs.so комуникира с интерфейса на ускорителя чрез CUDA), AMD не предлагат специфична интерфейсна библиотека, която GROMACS да свърже към изпълнимия код. Вместо това се използват библиотеката OpenCL и то специално тази, които е компилирана и вложена в софтуера за управление на графичните ускорители на AMD (не е ефективно да се използва директно стандартната дистрибутивната OpenCL библиотека на Linux дистрибуцията). Бележка относно използването на тази интеграция в HPC среда. Когато файловата система, върху която са инсталирани софтуерните компоненти, съдържа няколко инсталации на GROMACS, свързани към различни интерфейсни GPU библиотеките (едни към NVidia, а други към OpenCL), трябва да направите така, че различните GROMACS инсталации да бъдат изолирани една от друга и да не споделят динамични библиотеки, които да доведат до конфликт. Не правете библиотеката на OpenCL, предоставяна от AMD, общодостъпна. Възможно е в системата да има софтуер, който да се нуждае от друга специфична OpenCL библиотека (например, стандартната от дистрибуцията) и това да доведе до конфликти.
2. Инсталиране на GCC 7 и последната версия на CMakeКомпилирайте GROMACS с GCC 7 или по-висока версия. По-ниските версии на компилатора (подразбиращите се в CentOS 7 или Scientific Linux 7) не могат да компилират успешно C++ кода на проекта! Версията на GCC компилаторите в CentOS 7 и Scientific Linux 7 е стара (4.8.5). Тъй като програмният код на GROMACS е написан предимно на C++ (с използване на нови езикови стандартизации), трябва да използвате по-нова версия на компилаторите. Една възможност е да използвате хранилището SCL за CentOS и от там да инсталирате GCC 7: $ sudo yum install centos-release-scl $ sudo yum update $ sudo yum install devtoolset-7-gcc-c++ Също така, версията на CMake, която е подразбираща се за CentOS 7 и Scientific Linux 7 е стара и не може да се използва за конфигурирането на пре-компилационния процес. Най-лесната възможност да се сдобиете с нова версия на CMake е да използвате хранилището EPEL и от него да инсталирате пакета cmake3: $ sudo yum install epel-release $ sudo yum install cmake3 Това, което трябва да имате предвид в този случай е, че пакетът cmake3 ще инсталира инструментите Ако в конкретната ситуация не може да се използва хранилището EPEL (поради конкретни колизии на пакети), може да изтеглите изходния код на CMake от страницата на проекта: и да го компилирате използвайки GCC 7: $ scl enable devtoolset-7 bash $ mkdir tmp $ cd tmp $ wget https://github.com/Kitware/CMake/releases/download/v3.15.1/cmake-3.15.1.tar.gz $ tar xvf cmake-3.15.1.tar.gz $ cd cmake-3.15.1 $ ./configure --prefix=/home/builder/bin/cmake-3.15.1 $ make -j 6 && make install Може да замените пътя след
3. Изтегляне и компилиране на GROMACS с OpenCL поддръжкаИзтеглете последната актуална версия на GROMACS от http://manual.gromacs.org/documentation/ и разпакетирайте архива с кода: $ wget http://ftp.gromacs.org/pub/gromacs/gromacs-2019.3.tar.gz $ tar xvf gromacs-2019.3.tar.gz $ cd gromacs-2019.3 $ cmake3 .. -DCMAKE_INSTALL_PREFIX=/usr/unite/gromacs-2019.3-ocl -DGMX_BUILD_OWN_FFTW=ON -DGMX_GPU=ON -DGMX_USE_OPENCL=ON -DOpenCL_INCLUDE_DIR=/opt/amdgpu-pro/include -DOpenCL_LIBRARY=/opt/amdgpu-pro/lib64/libOpenCL.so.1 $ scl enable devtoolset-7 bash $ gmake -j 6 && gmake install Променете пътя след При успешно компилиране и инсталиране, ще видите следните връзки от главната библиотека на GROMACS към динамично свързани библиотеки: $ ldd /usr/unite/gromacs-2019.3-ocl/lib64/libgromacs.so linux-vdso.so.1 => (0x00007fff7a1d1000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f12441da000) librt.so.1 => /lib64/librt.so.1 (0x00007f1243fd2000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1243db6000) libOpenCL.so.1 => /opt/amdgpu-pro/lib64/libOpenCL.so.1 (0x00007f1243baf000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f12438a8000) libm.so.6 => /lib64/libm.so.6 (0x00007f12435a6000) libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f1243380000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f124316a000) libc.so.6 => /lib64/libc.so.6 (0x00007f1242d9d000) /lib64/ld-linux-x86-64.so.2 (0x00007f12456b9000) Най-важната връзка в този списък е тази: libOpenCL.so.1 => /opt/amdgpu-pro/lib64/libOpenCL.so.1 Тя трябва да сочи към Същата връзка трябва да е налична и за изпълнимия файл
4. Тест на детекцията на AMD GPU устройствата от GROMACSИзпълнете следния команден ред: $ gmx mdrun -nsteps 0 2>&1 | grep -A2 "GPUs detected" Ако връзката между GROMACS и OpenCL библиотеките работи, ще видите информация, подобна на следната: Number of GPUs detected: 2 #0: name: Hawaii, vendor: Advanced Micro Devices, Inc., device version: OpenCL 2.0 AMD-APP (1912.5), stat: compatible #1: name: Hawaii, vendor: Advanced Micro Devices, Inc., device version: OpenCL 2.0 AMD-APP (1912.5), stat: compatible #1: name: Hawaii, vendor: Advanced Micro Devices, Inc., device version: OpenCL 2.0 AMD-APP (1912.5), stat: compatible |
Последна актуализация: 22 юли 2019
2019 УНИТе, Веселин Колев