dataspaces и dataspaces_server са програмен интерфейс и сървър за съхранение на научни данни, главно под формата на мултиразмерни масиви, достъпни в мрежова среда (като например тази на HPC инфраструктура). Целта на този документ е да покаже как да бъде компилиран кода на dataspaces и как да се инсталира сървъра и примерите, с използване на компилаторите от колекцията на Intel Compilers и/или PGI Compilers.
Това, което е нужно да знаете е, че dataspaces_server
е MPI-базирано приложение и то може да обслужва MPI-базирани клиенти. Използването на dataspaces_server
в не-MPI среда не е ефективно.
Повече информация за проекта:
Ръководство за използване
Публикации
Преди да започнете, трябва да се убедите, че имате достъп до изпълнимите файлове на компилаторите, включени в 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
Преди използване на 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 процесите да се стартират по указания по-горе начин.