Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
9
Добавлен:
10.12.2018
Размер:
507.9 Кб
Скачать

21. Система параллельного программирования mpi.

При параллельном программировании разработчик, кроме составления алгоритма решения задачи, должен дополнительно: 1)Определить возможность параллельного выполнения отельных частей программы; 2)Распределить выделенные части алгоритма по отдельным параллельным ветвям с учетом архитектуры ВС; 3)Обеспечить синхронизацию параллельных ветвей алгоритма; 4)Распределить исходные данные и промежуточные результаты между параллельными ветвями алгоритма; 5)Защитить параллельные части программы от взаимных блокировок; 6)На каждом этапе проектирования алгоритма оценивать его эффективность. Необходимость совместного решения этих задач – главный тормоз в развитии технологии пар. прог-ания. Основные усилия разработчиков направлены на создание систем пар. прог-ания, максимально автоматизирующие решение вышеперечисленных задач. Наиболее распространенные системы пар. программирования: PVM, MPI, DVM

Система MPI включает как минимум два компонента: 1)библиотеки функций для языков C/C++ и фортран, 2)загрузчик исполняемых файлов. В MPI не предусмотрено средств декомпозиции и не предусмотрен отладчик. Фактически MPI является системой межпроцессной связи. В настоящее время система MPI является стандартом передачи сообщений и основой др. пар. систем прог-ания. Две версии MPI: MPI и MPI2 (расширенная и модернизированная (реализовано взаимодействие между приложениями «клиент-сервер»+динамическое порождение параллельных ветвей + создан интерфейс для работы с файлами)). Существует множество реализаций MPI (LAM, MP-MPICH, MP/PRO, Patent MPI, POWER MPI). Наиболее известна MPICH (перенесена на большое количество UNIX платформ, в виде MAN-страниц, документов, имеются свои библиотеки).

В MPI реализована модель параллелизма, называемая SPMD, которая является частным случаем модели MIMD. При написании программы, в системе MPI кодируются все параллельные ветви сразу. Для MPI загрузчика указывается количество экземпляров одной и той же программы, которые будут запускаться одновременно. Каждая параллельная ветвь имеет собственное пространство данных, полностью изолированное от других ветвей. Ветви обмениваются данными посредством сообщений. Все ветви загружаются одновременно как процессы Unix.

В MPI кол-во процессов фиксировано, в MPI2 – может меняться динамически. Если MPI запускается в сети, то на каждом компе д.б. файл загрузчик, к-й запускает приложения. Программист может выбирать способ взаимодействия ветвей: 1)Буферизация на передающей стороне, 2)Ожидание на принимающей стороне, 3)Ожидание на передающей стороне с кодом завершения на принимающей стороне.

Три способа передачи сообщений: 1)Блокирующий, 2)Не блокирующий (передача и прием в фоновом режиме). Вводится дополнительный параметр – квитанция, 3)Перманентный, специальный канал для ввода и вывода сообщений. Эффективно, если передача сообщений – внутри цикла, а создание и закрытие канала – вне цикла.

Функции коллективного взаимодействия (9штук 5 типов): 1)Broadcast, 2)Scatter, 3)Gather, 4)All gather, 5)All to all. Возможно объединение ветвей в коллетиве. В большинтсве ф-ций есть параметр «коммуниктор» (дескриптор коллектива, всех ветвей. Для гетерогенных сетей, которые могут иметь разную систему команд, разную разрядность в MPI имеются специальные средства для согласования форматов. Все функции оперируют количеством ячеек. Тип которых задается параметром функции. Недостаток – синтаксическому разбору должны подвергаться оба текста. Для решения задач анализа ветвей – специальные языки 1)mpC (massiv parallel C), 2)Фортран HPF.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]