УНИТе

Портал > Документация > Компилиране на GROMACS с поддръжка на AMD графичен ускорител под CentOS 7 и Scientific Linux 7

Компилиране на GROMACS с поддръжка на AMD графичен ускорител под CentOS 7 и Scientific Linux 7

Съдържание:

  1. Предварителна информация
  2. Инсталиране на GCC 7 и последната версия на CMake
  3. Изтегляне и компилиране на GROMACS с OpenCL поддръжка
  4. Тест на детекцията на AMD GPU устройствата от GROMACS

 

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 ще инсталира инструментите cmake, ccmake, cpack и ctest като cmake3, ccmake3, cpack3 и ctest3. Това означава, че ако искате да използвате новия cmake, ще трябва да го извикате като cmake3 и т.н.

Ако в конкретната ситуация не може да се използва хранилището EPEL (поради конкретни колизии на пакети), може да изтеглите изходния код на CMake от страницата на проекта:

https://cmake.org/download/

и да го компилирате използвайки 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

Може да замените пътя след --prefix с актуалния във вашата ситуация. Преименовайте инсталираните инструменти cmake, ccmake, cpack и ctest като cmake3, ccmake3, cpack3 и ctest3.

 

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

Променете пътя след -DCMAKE_INSTALL_PREFIX в командния ред по-горе (за примера това е /usr/unite/gromacs-2019.3-ocl) с конкретния път, който сте избрали за инсталационна директория на GROMACS във вашата системата.

При успешно компилиране и инсталиране, ще видите следните връзки от главната библиотека на 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

Тя трябва да сочи към libOpenCL.so.1, която се намира в директорията с AMD софтуера. Трябва да направите така, че посочването на пътя до тази библиотека, да не пречи на работата на другия софтуер, който очаква да използва libOpenCL.so, която не е компилирана от AMD.

Същата връзка трябва да е налична и за изпълнимия файл gmx.

 

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 УНИТе, Веселин Колев