Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реферат Соколов.docx
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
63.83 Кб
Скачать

Синхронизация процессов

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 достаточно сложно. Хотя использование технологий распределённого вычисление и ускоряет обработку информации, нужно всегда помнить о том, что необходимо обеспечивать всем участникам вычислений примерно одинаковую загрузку.