Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec22_mpi_pvm.ppt
Скачиваний:
17
Добавлен:
20.03.2015
Размер:
268.8 Кб
Скачать

Разработка

параллельных программ в системах с

распределенной

Судаков А.А.

памятью“Параллельные и распределенные вычисления” Лекция 22

План

MPI

PVM

Литература

http://www.mpi-forum.org/docs/docs.html

http://www.cluster.kiev.ua/support/documentat

ion

/

http://www.cluster.kiev.ua/support/document ation/pvm3/book/pvm-book.html

Интерфейсы разработки параллельных программ

API для распределенного программирования не рассчитаны на разработку сложных схем обмена между процессами

Для этого разработаны специальные интерфейсы

Стандарт MPI

Стандарт интерфейса обмена сообщениями

Гарантируется совместимость на уровне исходного кода C и Fortran

Существует множество реализаций

mpich

LAM

SCALI

..

По исполняемому коду, протоколу передачи и др. совместимость не гарантируется

MPI – надстройка над сокетами, общей памятью и др.

Основные понятия

MPI программа – набор параллельно выполняющихся процессов, которые могут обмениваться между собой сообщениями

Для обмена сообщениями процессы объединяются в группы

– коммуникаторы или коммуникационные области (домены)

MPI предоставляют функции обмена сообщениями внутри любых коммуникационных доменов

С помощью библиотеки MPI каждый процесс может определить свой номер внутри домена и выполнять необходимую часть расчетов (SIMD, MISD, MIMD)

Все процессы выполняют один и тот же исполняемый файл

Разные процессы выполняют разные исполняемые файлы

Каждое сообщение имеет свой номер – идентификатор, по которому сообщения можно отличать друг от друга

Запуск MPI машины

Зависит от реализации

Программы на других машинах запускаются командой $LAMRSH

export LAMRSH="rsh“

Виртуальная машина запускается командой

lamboot <файл списка машин>

Первой в списке должна быть локальная машина

node1

node2

Запуск программ

mpirun –np <количество процессоров> <программа>

Структура MPI программы

Все процессы чаще всего выполняют один и тот же исполняемый файл

Первой MPI функцией должна быть вызвана

MPI_Init( &argc, &argv )

Последней одна из функций

MPI_Finalize() - нормальное завершение

MPI_Abort( описатель области связи, код ошибки MPI ); - завершение с сообщением об ошибке

Между этими вызовами можно вызывать любые функции MPI

Основной коммуникационный домен

Все процессы выполняют один исполняемый файл

Все процессы принадлежат основному коммуникационному домену с именем MPI_COMM_WORLD

Каждому процессу после запуска присваивается номер

Для любого коммуникационного домена каждый процесс может узнать свой номер и общее количество процессов в домене

int size, rank;

MPI_Comm_size( MPI_COMM_WORLD, &size ); - количество процессов в домене

MPI_Comm_rank( MPI_COMM_WORLD, &rank ); - номер процесса в домене

Эти вызовы - только после MPI_Init

Соседние файлы в папке Лекции