Как компилировать mpi программы

Для компиляции 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.

Читайте также:
Открыть файл программой delphi

Подготовленные исходные коды программ, проверенные и отлаженные на локальном компьютере, рекомендуется компилировать на кластере под определенную версию дистрибутива 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru