Главная
Вычислительные ресурсы
C чего начать
Вопросы - ответы
Документация
Исследования
Контакты

МВС-1000 / Документация / Вычислительная система К-100

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

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

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

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

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

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

Пример.

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

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