|
МВС-1000 / Документация / Вычислительная система К-100
Базовая коммуникационная библиотека shmem-экспресс.
Руководство пользователя.
Дбар С. А., Лацис А. О., Храмцов М. Ю.
Введение.
Трансляция программы.
Программа пользователя транслируется командой shmemcc, например:
shmemcc -o myprog myprog.c
Программа на C должна иметь тип исходного файла «.c», и включать файл заголовков «shmem.h», программа на C++ - тип «.cpp» и включать файл заголовков «shmem++.h».
Если программа использует ускоритель CUDA, то следует соблюдать два условия:
- Программа должна быть написана на C++. Если она фактически написана на C, то следует дать файлу с исходным текстом тип «.cpp», и использовать файл заголовков «shmem++.h».
- Те файлы с исходными текстами программы, которые содержат специфические для CUDA языковые конструкции, должны иметь тип «.cu» и предварительно обрабатываться компилятором «nvcc».
Например, пусть программа оформлена в виде двух файлов исходного текста, причем файл mymain.cpp содержит только стандартные языковые конструкции C и/или C++, а файл myfunc.cu содержит специфические для CUDA языковые конструкции.
Тогда для получения исполняемого файла myprog необходимо выполнить команды:
nvcc –c myfunc.cu
shmemcc –o myprog mymain.cpp myfunc.o
Если программа написана с использованием OpenMP, то соответствующий аргумент следует добавить к команде трансляции, например:
shmemcc –o myprog -openmp myprog.c
Запуск программы.
Программа пользователя запускается командой shmemrun -ppn X, где X – число процессов, запускаемых на одном узле вычислителя. Допустимые значения X – от 1 до 11 (число доступных программе пользователя процессоров на узле). Процессы раскладываются по узлам по X штук в порядке номеров. Например, при использовании команды shmemrun -ppn 3 на первом из выделенных программе узлов будут размещены процессы 0, 1 и 2, на втором – 3, 4 и 5, и т. д. Аргументы этой команды – как у mpirun.
В состав узла входит, помимо 11 процессоров, 3 ускорителя CUDA. Если предполагается, что каждый процесс программы использует CUDA независимо от других, то такую программу можно запускать только в режиме не более, чем три процесса на узел (shmemrun -ppn 3).
В этом же режиме следует запускать программы, написанные с использованием OpenMP. При этом следует явно указывать число процессов на узле равным 11, например:
#pragma omp parallel for schedule(static) num_threads(11)
Прочие действия пользователя по управлению прохождением программ.
На МВС-экспресс устанавливается та же система управления прохождением задач, что используется для кластерных версий МВС-1000. Различия описаны выше в настоящем документе, а также в Руководстве программиста. Все остальные сведения можно почерпнуть, например, из: «Руководство пользователя системы МВС-1000», вариант для
k100
Пример.
В /usr/local/numa/examples, в директории jacoby, находится комплект текстов для решения задачи Дирихле методом Якоби, в двух вариантах: на универсальных процессорах и с использованием ускорителя CUDA. Там же – скрипты для трансляции обоих вариантов.
|