УНИТе

Портал > Документация > Компилиране на MPICH за алтернативни версии на GCC компилаторите под CentOS 7

Компилиране на MPICH за алтернативни версии на GCC компилаторите под CentOS 7

Съдържание:

  1. Предварителна информация
  2. Изтегляне на изходния код и процедура по компилирането
  3. Настройки за компилация на MPI приложения със специфично компилирания MPICH
  4. Изпълнение на MPI код, компилиран чрез версията на MPICH, създадена по рецептата по-горе

 

1. Предварителна информация

Приложенията, които използват MPI библиотеките, са изключително специфични спрямо използваната версия на библиотеките. Изпълнението на тези приложения трябва да става чрез инструмента mpirun от MPI пакета, от който са MPI библиотеките, динамично свързани към приложенията по време на компилирането. Това означава, че ако опитате да стартирате MPI приложение, оригинално компилирано спрямо MPI библиотеките на Intel Compilers, но му предоставите за динамично свързване MPI библиотеки, компилирани с GCC и използвате техния mpirun, то е възмжно да възникне грешка и да се провали изпълнението на кода.

Целта на този документ е да покаже как може да се компилират и използват MPI библиотеки и компилатори за създаване на приложения, чиито изпълним код се създава с последната версия на GCC компилаторите, достъпна за CentOS 7.

 

2. Изтегляне на изходния код и процедура по компилирането

Ако в HPC инфраструктурата, в която ще използвате MPI върху много нодове, имате InfiniBand вързаност между тях и искате да използвате RDMA, трябва да инсталирате libfabric и libmemcache библиотеките върху хостовете, на които ще се изпълнява MPI базиран код:

$ sudo yum install libfabric libmemcache

Само върху хоста, върху който ще компилирате MPICH, инсталирайте пакетите libfabric-devel и libmemcache-devel:

$ sudo yum install libfabric-devel libmemcache-devel

Преди да започнете процеса на компилиране, убедете се, че имате инсталиран GCC версия 8, съгласно прцедурата в документа "Инсталиране и използване на алтернативни версии на GCC компилаторите под CentOS 7". Изтеглете последната версия на MPICH от страницата на проекта. В примерите по-долу е използвана версия 3.3.1. Изтеглянето ѝ става най-лесно чрез wget:

$ wget http://www.mpich.org/static/downloads/3.3.1/mpich-3.3.1.tar.gz

Създайте директория, в която да разпакетирате кода:

$ mkdir ~/build

и извършете разпакетирането:

$ tar xvf mpich-3.3.1.tar.gz -C ~/build

Влезте в директорията с разпакетирания изходен код, включете използването на версия 8 на GCC 8 компилаторите:

$ cd ~/build/mpich-3.3.1
$ scl enable devtoolset-8 bash

Преди да започнете процеса на компилация, трябва да решите къде ще бъде инсталиран продукта ѝ. Ако ще предоставяте достъп до него за всички потребители на HPC, то най-вероятно ще се наложи да инсталирате върху споделена файлова система, която се използва за достъп до дървото със софтуера. Например, върху /usr/unite. Ако инсталацията ще бъде използвана само локално, върху работна станция, то може да инсталирате софтуера в /opt/ или /usr/local.

Започнете с процеса на конфигуриране на компилацията:

$ CC=gcc CXX=g++ FC=gfortran F77=gfortran ./configure --prefix=/usr/local/appstack/mpich-3.3.1-gcc-8 --enable-fortran=all --enable-cxx --with-libfabric=/usr --with-libmemcached=/usr --with-gnu-ld --enable-cache

След това компилирайте:

$ make -j6

и инсталирайте:

$ make install

 

3. Настройки за компилация на MPI приложения със специфично компилирания MPICH

За да могат да бъдат използвани MPI-базираните компилатори и библиотеки, създадени съгласно рецептата по-горе, трябва да укажете пътищата до тях с предимство, преди да компилирате програмен код (заменете конкретните пътища, указани по-долу след PATH и LD_LIBRARY_PATH, с тези, които са валидни за вашата система):

$ export PATH=/usr/local/appstack/mpich-3.3.1-gcc-8/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/appstack/mpich-3.3.1-gcc-8/lib:$LD_LIBRARY_PATH

Имайте предвид, че MPI-базираните компилатори, създадени съгласно рецептата по-горе, са следните:

mpic++
mpicc
mpif77
mpif90
mpifort

а съответните библиотеки за динамично свързване са:

libmpicxx.so.12.1.7
libmpifort.so.12.1.7
libmpi.so.12.1.7

Ако ще компилирате статично свързан код, на разполжение са следните статични библиотеки:

libmpicxx.a
libmpifort.a
libmpi.a

 

4. Изпълнение на MPI код, компилиран чрез версията на MPICH, създадена по рецептата по-горе

Изпълнението на MPI код, компилиран чрез версията на MPICH, създадена по рецептата, дадена по-горе, става по стандартния за целта начин - чрез инструмента mpirun. Единствената особеност е, че трябва да се използва инструмента mpirun от MPICH компилацията (заменете конкретния път, указан по-долу след PATH, с този, който е валиден за вашата система):

$ export PATH=/usr/local/appstack/mpich-3.3.1-gcc-8/bin:$PATH
$ which mpirun
$ mpirun -np X ...

или да натисне Ctrl-D.

 


Последна актуализация: 14 септември 2019

2019 УНИТе, Веселин Колев