RefNUMA – библиотека для организации виртуальной общей памяти в программах, использующих MPI.

А. О. Лацис

Приложение 3. Как транслировать программу, использующую RefNUMA.

Компиляция программ, использующих штатные версии RefNUMA, на суперкомпьютере К-100, выполняется командой shmemcc, с добавлением в конце командной строки значения set-переменной COARR, например:

shmemcc –o myexe mysource.c myobj.o $COARR 

Значение этой set-переменной задается в стандартном варианте .bash_profile для вариантов системы параллельного программирования, поддерживающих shmem. Таких вариантов в настоящее время два: «компилятор Интел, Интел MPI, Shmem-Экспресс (intelintelmpimvse)», и «компилятор Интел, OpenMPI, Qlogic shmem (intelopenmpishmem)».

На суперкомпьютерах МВС-Экспресс и К-10 следует использовать команду mpicc, а в конце добавить «-D__MVSE_E -lcoarr», например:

mpicc -o myexe mysource.c myobj.o -D__MVSE_E -lcoarr

На этих машинах используется единственный вариант базовой системы параллельного программирования, и единственная «штатная» версия shmem.

В случае, если в программе используются возможности препроцессора RefNUMA, исходный текст следует сначала явно обработать препроцессором, а затем скомпилировать обычным образом. Препроцессор RefNUMA создает результирующий файл с именем, полученным из имени исходного файла добавлением суффикса «.preprocessed.c».

Пример для К-100:

refnuma_preproc mysource.c
shmemcc -o myexe mysource.c.preprocessed.c myobj.o $COARR

Пример для МВС-Экспресс и К-10:

refnuma_preproc mysource.c -D__MVSE_E
mpicc -o myexe mysource.c.preprocessed.c myobj.o -lcoarr

Компиляция программ, использующих версии RefNUMA на базе microshmem, выполняется так же, как компиляция любых других MPI-программ, но с добавлением в командную строку, как минимум, ссылки на библиотеку RefNUMA-microshmem.

На К-100 таких библиотек две: для Intel MPI и для Open MPI. Они находятся в /common/microshmem/lib/libcoarr_intelmpi.a и /common/microshmem/lib/libcoarr_openmpi.a, соответственно.

Примеры командной строки:

mpiicc –o example example.c -L/common/microshmem/lib -lcoarr_intelmpi
mpicc –o example example.c -L/common/microshmem/lib -lcoarr_openmpi

На МВС-Экспресс и К-10 библиотека одна: /common/microshmem/lib/libcoarr.a.

Пример командной строки:

mpicc –o example example.c -L/common/microshmem/lib -lcoarr

Прототипы функций touch_long() и touch_double() (см. Приложение 1), наличие которых отличает версии RefNUMA на базе microshmem от штатных версий, находятся в /common/microshmem/include/microshmem.h также доступном через ссылку как /common/microshmem/include/shmem.h

Если программа включает этот заголовочный файл без указания полного пути, то в командной строке надо дополнительно указать ссылку на директорию, где он находится.

Например, если в программе написано:

#include <microshmem.h>
то командная строка компиляции могла бы иметь вид:
mpicc -o example example.c\
-I/common/microshmem/include\
-L/common/microshmem/lib -lcoarr_openmpi

◄ Приложение 2 Приложение 4 ►
 
 
 
 
 
 
 
 
  Тел. +7(499)220-79-72; E-mail: inform@kiam.ru