- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
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.