Базовая коммуникационная библиотека shmem-экспресс.
Руководство пользователя.

Дбар С. А., Лацис А. О., Храмцов М. Ю.

Введение.

Трансляция программы.

Программа пользователя транслируется командой mpicc, например:

mpicc -o myprog myprog.c

Программа на C должна иметь тип исходного файла «.c», и включать файл заголовков «shmem.h», программа на C++ - тип «.cpp» и включать файл заголовков «shmem++.h».

Если программа использует ускоритель CUDA, то следует соблюдать два условия:

  1. Программа должна быть написана на C++. Если она фактически написана на C, то следует дать файлу с исходным текстом тип «.cpp», и использовать файл заголовков «shmem++.h».
  2. Те файлы с исходными текстами программы, которые содержат специфические для CUDA языковые конструкции, должны иметь тип «.cu» и предварительно обрабатываться компилятором «nvcc».

Например, пусть программа оформлена в виде двух файлов исходного текста, причем файл mymain.cpp содержит только стандартные языковые конструкции C и/или C++, а файл myfunc.cu содержит специфические для CUDA языковые конструкции.

Тогда для получения исполняемого файла myprog необходимо выполнить команды:

nvcc –c myfunc.cu
mpicc –o myprog mymain.cpp myfunc.o

Если программа написана с использованием OpenMP, то соответствующий аргумент следует добавить к команде трансляции, например:

mpicc –o myprog -openmp myprog.c 

Запуск программы.

Программа пользователя запускается командой mpirun -ppn X, где X – число процессов, запускаемых на одном узле вычислителя. Допустимые значения X – от 1 до 7 (число доступных программе пользователя процессоров на узле). Процессы раскладываются по узлам по X штук в порядке номеров. Например, при использовании команды mpirun -ppn 3  на первом из выделенных программе узлов будут размещены процессы 0, 1 и 2, на втором – 3, 4 и 5, и т. д. Аргументы этой команды – как у mpirun.

В состав узла входит, помимо семи процессоров, лишь один (на некоторых узлах сдвоенный) ускоритель CUDA. Если предполагается, что каждый процесс программы использует CUDA  независимо от других, то такую программу можно запускать только в режиме «один процесс на узел» (mpirun -ppn 1).

В этом же режиме следует запускать программы, написанные с использованием OpenMP. При этом следует явно указывать число процессов на узле равным 7, например:

#pragma omp parallel for schedule(static) num_threads(7)

Прочие действия пользователя по управлению прохождением программ.

На mvse устанавливается та же система управления прохождением задач, что используется для кластерных версий МВС-1000. Различия описаны выше в настоящем документе, а также в Руководстве программиста. Все остальные сведения можно почерпнуть, например, из: «Руководство пользователя системы МВС-1000», вариант для mvse

Пример.

В /usr/local/numa/examples, в директории  jacoby, находится комплект текстов для решения задачи Дирихле методом Якоби, в двух вариантах: на универсальных процессорах и с использованием ускорителя CUDA. Там же – скрипты для трансляции обоих вариантов.

 
 
 
 
 
 
 
 
  Тел. +7(499)220-79-72; E-mail: inform@kiam.ru