- •Оглавление
- •Введение
- •Mpi. Терминология и обозначения
- •Стандарты mpi
- •Классы решаемых задач
- •Функционирование интерфейса
- •Общие процедуры mpi
- •Прием/передача сообщений между отдельными процессами Прием/передача сообщений с блокировкой
- •Прием/передача сообщений без блокировки
- •Объединение запросов на взаимодействие
- •Совмещенные прием/передача сообщений
- •Коллективные взаимодействия процессов
- •Синхронизация процессов
- •Работа с группами процессов
- •Работа с mpi под Ос Ubuntu
- •Установка библиотек mpi для Ос Ubuntu
- •Источники и Литература
Синхронизация процессов
int MPI_Barrier( MPI_Comm comm)
comm - идентификатор группы
Блокирует работу процессов, вызвавших данную процедуру, до тех пор, пока все оставшиеся процессы группы comm также не выполнят эту процедуру.
Работа с группами процессов
int MPI_Comm_split( MPI_Comm comm, int color, int key, MPI_Comm *newcomm)
comm - идентификатор группы
color - признак разделения на группы
key - параметр, определяющий нумерацию в новых группах
OUT newcomm - идентификатор новой группы
Данная процедура разбивает все множество процессов, входящих в группу comm, на непересекающиеся подгруппы - одну подгруппу на каждое значение параметра color (неотрицательное число). Каждая новая подгруппа содержит все процессы одного цвета. Если в качестве color указано значениеMPI_UNDEFINED, то в newcomm будет возвращено значение MPI_COMM_NULL.
int MPI_Comm_free( MPI_Comm comm)
OUT comm - идентификатор группы
Уничтожает группу, ассоциированную с идентификатором comm, который после возвращения устанавливается в MPI_COMM_NULL.
Работа с mpi под Ос Ubuntu
Библиотеки для работы с MPI
MPICH ( «Message Passing Interface Chameleon») — это одна из самых первых разработанных библиотек MPI. На её базе было создано большое количество других библиотек как OpenSource, так и коммерческих. В настоящее время существует две ветви исходных кодов: MPICH1 и MPICH2. Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Арагонской лаборатории, с участием IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, Ohio state university, UBC.
MPICH2 — легко портируемая быстрая реализация стандарта MPI. Отличительные особенности:
Поддерживает различные вычислительные и коммуникационные платформы, включая общедоступные кластеры (настольные системы, системы с общей памятью, многоядерные архитектуры), высокоскоростные сети и эксклюзивные вычислительные системы.
Модульная структура для создания производных реализаций, предоставляющая широкие возможности для исследования технологии MPI.
Установка библиотек mpi для Ос Ubuntu
Итак, рассмотрим установку и настройку MPI для Ubuntu. Тестировалось на Ubuntu 10.04. Запускаем терминал и вводим команду:
$ sudo apt-get install mpich2
Далее после установки, которая должна пройти без сбоев и ошибок, заходим в «Домашний каталог /home/» и там создаем файл .mpd.conf, в него обязательно нужно вписать строчку ‘secretword=password’. Затем опять открываем терминал и в нём вводим следующее:
$ chmod 600 .mpd.conf
Вводом данной команды мы выставили права доступа к созданному файлу .mpd.conf, 600 означает, что этот файл будет скрыт от всех кроме вас и ваших скриптов. Для запуска MPI используем команду mpd &.
Теперь давайте разберёмся с компиляцией программ! Пример:
$ mpic++ -fopenmp -o a main.cpp
Данной командой мы сообщаем, что будем использовать OpenMPI и указываем имя исполняемого файла («a»). Здесь же, в терминале (консоли) набираем и запускаем выполнение просчёта:
$ mpirun -np 2 ./a
Где 2 — это количество процессов
Запуск С программы на ОС Ubuntu +MPI
Ниже приведен пример простой программы, использующей библиотеку MPI и способ ее компиляции и запуска. #include #include "mpi.h" int main( int argc, char *argv[] ) { int rank; int size; MPI_Init( 0, 0 ); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); printf( "Hello world from process %d of %d\n", rank, size ); printf("hi!! it is my first prog!"); MPI_Finalize(); return 0; }
Далее нужно запустить демон mpd .
Если все прошло хорошо, то дальше можно скомпилировать и запустить программу. mpic++ hellow.c появился файлик a.out . запускаем его командой mpirun -n 4 ./a.out где -n количество потоков.
Вывод
Решение использовать в своих задачах MPI следует осторожно, после тщательного взвешивания своих сил и возможностей как программиста. Несмотря на то, что MPI представляет собой значительный шаг вперед по сравнению с предшествующим поколением библиотек передачи сообщений, а, возможно и вследствие этого, программировать на MPI достаточно сложно. Хотя использование технологий распределённого вычисление и ускоряет обработку информации, нужно всегда помнить о том, что необходимо обеспечивать всем участникам вычислений примерно одинаковую загрузку.