УНИТе

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

Компилиране, инсталиране и използване на dataspaces_server под CentOS 7 и 8

Съдържание:

  1. Предварителна информация
  2. Изтегляне на изходния код и компилирането му с Intel Compilers и PGI Compilers
  3. Използване на dataspaces_server

 

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

dataspaces и dataspaces_server са програмен интерфейс и сървър за съхранение на научни данни, главно под формата на мултиразмерни масиви, достъпни в мрежова среда (като например тази на HPC инфраструктура). Целта на този документ е да покаже как да бъде компилиран кода на dataspaces и как да се инсталира сървъра и примерите, с използване на компилаторите от колекцията на Intel Compilers и/или PGI Compilers.

Това, което е нужно да знаете е, че dataspaces_server е MPI-базирано приложение и то може да обслужва MPI-базирани клиенти. Използването на dataspaces_server в не-MPI среда не е ефективно.

Повече информация за проекта:

Ръководство за използване

Публикации

 

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

Преди да започнете, трябва да се убедите, че имате достъп до изпълнимите файлове на компилаторите, включени в Intel Compilers и/или PGI Compilers (в зависимост от това кой пакет компилатори ще използвате). В случай на използване на Intel Compilers това е icc, а при използване на PGI Compilers това ще е pgcc.

Преди да пристъпите към процеса на компилация, трябва да инсталирате пакетите, които съдържат нужните зависимости:

  • CentOS 7:

    $ sudo yum install librdmacm libibverbs libnl3-devel infiniband-diags-devel infiniband-diags-devel-static libfabric-devel
  • CentOS 8:

    $ dnf yum install librdmacm libibverbs libnl3-devel infiniband-diags-devel infiniband-diags-devel-static libfabric-devel

За да изтеглите поседната стабилна версия на изходния програмен код, посетете хранилището на проекта:

https://dataspaces.rdi2.rutgers.edu/download/

Връзката за изтегляне на архива в изходния код е в текста на страницата. За примерите по-долу се предполага, че наличната към момента версия на библиотеката е 1.8.1 (по-времето, по което вие изпълнявате тези инструкции, версията може да е по-висока от 1.8.1):

$ wget https://dataspaces.rdi2.rutgers.edu/downloads/dataspaces-latest.tar.gz

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

$ mkdir ~/build

Разпакетирайте в нея файла с архива:

$ tar xvf dataspaces-latest.tar.gz -C ~/build

влезте в новосъздадената при разпакетирането директория:

$ cd ~/build/dataspaces-1.8.1

и там изпълнете операциите по конфигурирането, компилирането и инсталирането:

  • компилиране чрез Intel Compilers:

    $ source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
    $ CC=mpiicc CXX=mpiicpc FC=mpiifort ./configure --prefix=/usr/unite/dataspaces-1.8.1-icc
    $ make -j6
    $ make install
  • компилиране чрез PGI Compilers:

    $ PATH=/opt/pgi/linux86-64/2019/bin:/opt/pgi/linux86-64/2019/mpi/openmpi-3.1.3/bin:$PATH LD_LIBRARY_PATH=/opt/pgi/linux86-64/2019/lib:/opt/pgi/linux86-64/2019/mpi/openmpi-3.1.3/lib:$LD_LIBRARY_PATH CC=mpicc CXX=mpicxx FC=mpifort ./configure --prefix=/usr/unite/dataspaces-1.8.1-pgi
    $ PATH=/opt/pgi/linux86-64/2019/bin:/opt/pgi/linux86-64/2019/mpi/openmpi-3.1.3/bin:$PATH LD_LIBRARY_PATH=/opt/pgi/linux86-64/2019/lib:/opt/pgi/linux86-64/2019/mpi/openmpi-3.1.3/lib:$LD_LIBRARY_PATH make -j6
    $ make install

Обърнете внимание на следните особености:

  • при извършване на конфигурацията и компилацията чрез Intel Compilers:

    В този случай InfiniBand библиотеките в сисемата се детектират от инсталатора и се използват:

    Infiniband available.
    	- INFINIBAND_CFLAGS =  
    	- INFINIBAND_CPPFLAGS =  
    	- INFINIBAND_LDFLAGS = 
    	- INFINIBAND_LIBS =  -libverbs
  • при извършване на конфигурацията и компилацията чрез PGI Compilers:

    В този случай InfiniBand библиотеките в сисемата не се детектират от инсталатора и вместо това се използва вградената в кода DART TCP функцтионалност:

    TCP socket DART is enabled.
            - TCP_SOCKET_CFLAGS = 
            - TCP_SOCKET_CPPFLAGS = 
            - TCP_SOCKET_LDFLAGS = 
            - TCP_SOCKET_LIBS =

Това, което е задължително да направите, е да копирате шаблона на конфигурационния файл dataspaces.conf в инсталационната директория на сървъра, също така и директорията с тестовете и файла README

  • при извършване на конфигурацията и компилацията чрез Intel Compilers:

    $ mkdir /usr/unite/dataspaces-1.8.1-icc/etc
    $ cp ~/build/dataspaces-1.8.1/dataspaces.conf /usr/unite/dataspaces-1.8.1-icc/etc
    $ mkdir -p /usr/unite/dataspaces-1.8.1-icc/usr/share
    $ cp -pr ~/build/dataspaces-1.8.1/README ~/build/dataspaces-1.8.1/tests /usr/unite/dataspaces-1.8.1-icc/usr/share
  • при извършване на конфигурацията и компилацията чрез PGI Compilers:

    $ mkdir /usr/unite/dataspaces-1.8.1-pgi/etc
    $ cp ~/build/dataspaces-1.8.1/dataspaces.conf /usr/unite/dataspaces-1.8.1-pgi/etc
    $ mkdir -p /usr/unite/dataspaces-1.8.1-pgi/usr/share
    $ cp -pr ~/build/dataspaces-1.8.1/README ~/build/dataspaces-1.8.1/tests /usr/unite/dataspaces-1.8.1-pgi/usr/share

 

3. Използване на dataspaces_server

Преди използване на dataspaces_server проверете дали InfiniBand интерфейсът в системата е изграден и дали може да обменя данни с другите учасници в HPC инфраструктурата.

Няма универсална рецепта за използването на dataspaces_server. В този смисъл той трябва да се използва според случая и със съответните настройки. Също така, нужно е да стартирате сървъра като MPI-изпълняем процес чрез mpiexec, например:

  • при използване на Intel Compilers:

    $ source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
    $ mpiexec -np 2 /usr/unite/dataspaces-1.8.1-icc/bin/dataspaces_server -s 1 -c 2
  • при използване на PGI Compilers:

    $ PATH=/opt/pgi/linux86-64/2019/mpi/openmpi-3.1.3/bin:$PATH mpiexec -np 2 /usr/unite/dataspaces-1.8.1-icc/bin/dataspaces_server -s 1 -c 2

ВНИМАНИЕ! Конфигурационния файл dataspaces.conf трябва да се намира в текущата директория, в която се стартират сървърските процеси.

Освен това, файлът dataspaces.conf трябва да бъде редактиран при почти всяка нова задача. Което означава, че е наложително да се използва специфична директория (а не тази, в която е шаблона му). Например, един начин да се създаде специфична настройка в dataspaces.conf

  • при използване на Intel Compilers:

    $ mkdir -p ~/project_1/dataspaces_server/etc
    $ cd ~/project_1/dataspaces_server/etc
    $ cp /usr/unite/dataspaces-1.8.1-icc/etc/dataspaces.conf

    след това да се редактира така копирания файл dataspaces.conf и MPI процесите да се стартират по указания по-горе начин.

  • при използване на PGI Compilers:

    $ mkdir -p ~/project_1/dataspaces_server/etc
    $ cd ~/project_1/dataspaces_server/etc
    $ cp /usr/unite/dataspaces-1.8.1-pgi/etc/dataspaces.conf

    след това да се редактира така копирания файл dataspaces.conf и MPI процесите да се стартират по указания по-горе начин.

 


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

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