Для компиляции MPI-приложений рекомендуется пользоваться командами mpicc (для программ на С), mpiCC или mpic++ (для программ на С++), и mpif77/mpif90 (для программ на Фортране 77/90). Опция компилятора «-o name» позволяет задать имя name для получаемого выполнимого файла, по умолчанию выполнимый файл называется a.out. Для оптимизации рекомендуется использовать ключ компилятора «-fast», например:
mpif77 -fast -o program program.f
Если необходимо только скомпилировать один объектный модуль и не выполнять линковку, используется опция «-с», например:
mpiCC -c program2.C
Для сборки многомодульных приложений целесообразно пользоваться утилитой make. Простейшие примеры MPI-программ на языках Си и Фортран 77/90 доступны на кластере в каталоге /usr/local/examples.
В ОС Windows исполняемые файлы имеют определенное расширение: exe, bat, cmd, com и ряд других. Файлы только таких типов могут быть выполнены. В Linux исполняемые файлы определяются не их расширением, а установкой битов выполнения. Следующей командой в Linux можно сделать исполняемым любой файл, независимо от расширения: chmod 755 .
Установка, настройка и запуск программ средствами MPI в Visual Studio 2019
О других параметрах компиляторов можно узнать, набрав в консоли man g++, man gcc, man g77 или обратившись к соответствующим руководствам.
Практически все реализации MPI поддерживают запуск параллельных приложений в режиме эмуляции на отдельно взятой рабочей станции. Это можно делать как на Linux, так и Windows машинах.
В Linux рекомендуется использовать пакет mvapich2, а для создания MPI приложений на Windows машинах можно использовать пакет MPICH2 в версии для Windows (http://www.mcs.anl.gov/mpi/mpich/mpich-nt). Для успешного портирования программ с Windows на Linux не следует использовать расширения предоставляемые средами программирования, такими как VisualStudio и BorlandBuilder.
Подготовленные исходные коды программ, проверенные и отлаженные на локальном компьютере, рекомендуется компилировать на кластере под определенную версию дистрибутива MPI. Только в этом случае можно гарантировать успешное выполнение программы. Если использование исходного кода по каким-либо причинам невозможно или нецелесообразно, возможно исполнение бинарных файлов форматов: elf, a.out, скомпилированных под Linux. При этом необходимо придерживаться следующих рекомендаций:
— Следует учитывать архитектуру процессора. Не следует применять оптимизацию, доступную на других архитектурах, например технологию 3DNow в процессорах AMD.
— Совпадение версий динамически подключаемых библиотек. При несовпадении версий следует использовать статическую сборку — ключ «-static».
— Совпадение версии дистрибутива MPI. Локальные параллельные библиотеки пользователя должны быть собраны с этой же версией MPI.
Источник: mydocx.ru
Программирование с использованием Intel MPI. Введение
При запуске MPI-программ с использованием Remote Shell в ОС Linux следует создать файл .rhosts.
Лабораторная работа 1. Написание и запуск простых MPI программ на нескольких компьютерах.
f01.ptc.spbu.ru f02.ptc.spbu.ru f03.ptc.spbu.ru f04.ptc.spbu.ru
Файл machines:
Пример файла machines
f01.ptc.spbu.ru f02.ptc.spbu.ru f03.ptc.spbu.ru f04.ptc.spbu.ru fserver.ptc.spbu.ru:2
# mpicc -compile_info cc -DUSE_STDARG -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDARG_H=1 -DUSE_STDARG=1 -DMALLOC_RET_VOID=1 -I/usr/local/mpich/include –c # mpicc -link_info cc -DUSE_STDARG -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDARG_H=1 -DUSE_STDARG=1 -DMALLOC_RET_VOID=1 -L/usr/local/mpich/lib –lmpich # mpif77 -compile_info f77 -I/usr/local/mpich/include –c # mpif77 -link_info f77 -L/usr/local/mpich/lib -lmpich
mpirun –np n [ключи MPI] программа [ключи и аргументы программы]
Некоторые ключи загрузчика приложений mpirun:
-arch «архитектура»
Архитектура параллельной вычислительной системы, которая должна соответствовать суффиксу в имени файла machines.»архитектура»
-machinefile файл
Использовать список компьютеров из указанного файла
Компиляция и запуск программ в MPI-2. Демон mpd. Файлы конфигурации
MPI-2
В MPI-2 демон mpd играет важную роль. Параллельная программа может выполняться только если предварительно были запущены демоны mpd, образующие «кольцо демонов». Он управляет выполнением процессов MPI-программы на данном вычислительном узле. Демоны запускаются от имени конкретных пользователей ОС и не оказывают влияния друг на друга.
Некоторые факты из жизни демонов:
- Кольцо демонов создаётся один раз и может быть использовано многократно, разными программами одного пользователя.
- Кольцо демонов прекращает свой существование в результате выполнения команды mpdallexit.
- Кольцо демонов одного пользователя не может взаимодействовать с демонами mpd других пользователей.
- Благодаря демонам mpd запуск MPI-программ выполняется быстрее.
- Исключена возможность «зависания» процессов.
В программных реализациях MPI имеются средства управления работой демонов mpd. Запуску параллельной программы предшествует запуск демона mpd на всех узлах вычислительной системы. Демоны взаимодействуют друг с другом.
Запуск демонов (в этом примере 5) выполняется командой:
mpdboot –n 5
Проверка взаимодействия демонов между собой выполняется командой:
mpdtrace
Если при выполнении этой команды выводятся сообщения об ошибках, это говорит о неправильной настройке MPI или локальной сети.
Завершение работы демонов выполняется командой:
mpdallexit
MPD_SECRETWORD=kalosha MPD_PORT_RANGE=1003:10003
pd00 ifhn=195.168.0.69 pd01 ifhn=192.168.0.74 pd02 ifhn=192.168.0.75 pd03 ifhn=192.168.0.76 pd04 ifhn=192.168.0.77 pd05 pd06 pd07
mpdboot –n число_демонов [ключи]
Запуск параллельной программы
mpiexec [ключи] –n число имя_исполняемого файла
Завершение работы всех демонов
Источник: intuit.ru
2. Создание mpi-программы в Visual Studio
Прежде всего, нужно настроить Visual Studio, чтобы он находил заголовочные файлы и .lib-библиотеки MPICH. Для этого запустите Visual Studio и нажмите Tools → Options, в дереве слева выберите Projects and Solutions → VC++ Directories. Справа-вверху выберите Show directories for: Include files. Нажмите кнопочку с жёлтой папочкой и добавьте путь к .h-файлам:
Рисунок 4.1. Настройка пути к заголовочным файлам MPICH.
После этого проделайте ту же процедуру для библиотек (Show directories for: Library files):
Рисунок 4.2. Настройка пути к библиотечным файлам MPICH
Теперь создайте консольный проект:
Прежде всего, нужно запустить Visual Studio, и выбрать File → New → Project. Появится окно создания проекта. Выберите тип проекта «Win32», шаблон — «Win32 Console Application». Введите осмысленное имя проекта, выберите папку для хранения проекта, уберите галочку «Create directory for solution»:
Рисунок 4.3. Окно создания проекта
Нажмите кнопку «OK», появится окно настройки будущего проекта. Выберите вкладку «Application Settings», и включите галку «Empty project»:
Рисунок 4.4. Окно настройки будущего проекта
По нажатию кнопки «Finish» проект будет создан. Никаких видимых изменений в главном окне Visual Studio не произойдёт. Только имя проекта в заголовке окна как бы говорит нам о том, что мы работаем с проектом.
Рисунок 4.5. Окно добавления элементов в проект
После этого вам будет предоставлено окно для ввода исходного кода программы.
Теперь нажмите Project → Add New Item, появится окно добавления элементов в проект. Добавьте .cpp-файл в проект:
Откройте окно настроек проекта (Project → Properties), выберите Configuration: All Configurations, в дереве слева выберите Configuration Properties → Linker → Input. Добавьте mpi.lib в поле Additional Dependencies справа:
Рисунок 4.6. Добавление mpi.lib к програмне
3. Пример параллельной программы с использованием функций mpi.
В качестве примера параллельной программы, написанной в стандарте MPI для языка С, рассмотрим программу вычисления числа π. Число π можно определить следующим образом:
. (6.1)
Вычисление интеграла затем заменяют вычислением суммы:
, (6.2)
где: xi = i/n.
Далее приведен код программы на языке С:
int main ( int argc, char *argv[ ] )
double mypi, pi, h, sum, x, t1, t2, PI25DT = 3.141592653589793238462643;
Источник: studfile.net