![]() |
||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||
![]() |
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 |