ВУЗ:
Составители:
Рубрика:
- 103 -
среди которых основными являются функции
MPI_Send/MPI_Recv
обмена
сообщениями типа ‘точка-точка’. Однако для удобства программирования в
MPI включен широкий набор функций - широковещательная передача
MPI_Bcast
, раздача сообщений от одного процесса всем процессам группы
MPI_Scatter
, cбор данных от всех процессов в группе в один из процессов
MPI_Gather
и т.п., функции барьерной синхронизации процессов
MPI_Barrier
,
глобальные операции редукции
MPI_Reduce
,
MPI_Allreduce
,
MPI_Reduce_Scatter
,
MPI_Scan
(конкретная операция редукции может быть
переопределена пользователем) и др.
При программировании на MPI программист обязан контролировать ис-
ходный текст на наличие структур, вызывающих (труднодетектируемые на
работающей программе) дедлоки (deadlock – тупиковая ситуация, зависание);
возникновение дедлока при MPI-программировании обычно сопряжено с ис-
пользованием блокирующих функций обмена сообщениями. В данном случае
дедлок – ситуация, когда
первый процесс не может вернуть управление из
функции посылки, поскольку второй не начинает прием сообщения, а второй
не может начать прием, ибо сам по той же причине не может выполнить по-
сылку.
Дополнительную гибкость дает MPI возможность определения виртуаль-
ной топологии процессоров; при этом (независимо от физической топологии
процессорной решетки
) может вводиться топология
n
-мерных кубов (торов)
или произвольного графа (
MPI_CART_CREATE
,
MPI_GRAPH_CREATE
соответ-
ственно и функции поддержки их использования). Виртуальные топологии
служат как целям упрощения программирования (например, двумерная ре-
шетка удобна для произведения матричных операций), так и способствуют
повышению производительности (при корректном их отображении на физи-
ческую топологию вычислительных узлов многопроцессорной системы).
В целом создание программ с использованием MPI – удел любителей наи-
более
тонкого, гибкого (низкоуровневого) программирования, однако (вслед-
ствие именно этого) имеются возможности разработки надстроек над MPI,
существенно упрощающих работу. MPI применен при разработке большого
количества проблемно-ориентированных параллельных библиотек. Простой
пример Fortran’MPI-программы приведен в Приложении 1г).
К ‘ручным’ (низкоуровневым) технологиям разработки параллельных про-
грамм относится и система PVM (Parallel Virtual Machine,
http://epm.ornl.gov/pvm/pvm_home.html
), предложенная исторически ранее MPI
(проект –1989, реализация – 1991 г.). PVM стандартизирует не только ин-
терфейс программиста (набор и содержание предоставляемых функций), но
и интерфейс пользователя (команды пользователя, вводимые с клавиатуры
для управления параллельной программы), [4]. Функции PVM предоставля-
ются общедоступной библиотекой, существуют реализации PVM для самых
различных платформ.
- 103 - среди которых основными являются функции MPI_Send/MPI_Recv обмена сообщениями типа ‘точка-точка’. Однако для удобства программирования в MPI включен широкий набор функций - широковещательная передача MPI_Bcast, раздача сообщений от одного процесса всем процессам группы MPI_Scatter, cбор данных от всех процессов в группе в один из процессов MPI_Gather и т.п., функции барьерной синхронизации процессов MPI_Barrier, глобальные операции редукции MPI_Reduce, MPI_Allreduce, MPI_Reduce_Scatter, MPI_Scan (конкретная операция редукции может быть переопределена пользователем) и др. При программировании на MPI программист обязан контролировать ис- ходный текст на наличие структур, вызывающих (труднодетектируемые на работающей программе) дедлоки (deadlock – тупиковая ситуация, зависание); возникновение дедлока при MPI-программировании обычно сопряжено с ис- пользованием блокирующих функций обмена сообщениями. В данном случае дедлок – ситуация, когда первый процесс не может вернуть управление из функции посылки, поскольку второй не начинает прием сообщения, а второй не может начать прием, ибо сам по той же причине не может выполнить по- сылку. Дополнительную гибкость дает MPI возможность определения виртуаль- ной топологии процессоров; при этом (независимо от физической топологии процессорной решетки) может вводиться топология n-мерных кубов (торов) или произвольного графа (MPI_CART_CREATE, MPI_GRAPH_CREATE соответ- ственно и функции поддержки их использования). Виртуальные топологии служат как целям упрощения программирования (например, двумерная ре- шетка удобна для произведения матричных операций), так и способствуют повышению производительности (при корректном их отображении на физи- ческую топологию вычислительных узлов многопроцессорной системы). В целом создание программ с использованием MPI – удел любителей наи- более тонкого, гибкого (низкоуровневого) программирования, однако (вслед- ствие именно этого) имеются возможности разработки надстроек над MPI, существенно упрощающих работу. MPI применен при разработке большого количества проблемно-ориентированных параллельных библиотек. Простой пример Fortran’MPI-программы приведен в Приложении 1г). К ‘ручным’ (низкоуровневым) технологиям разработки параллельных про- грамм относится и система PVM (Parallel Virtual Machine, http://epm.ornl.gov/pvm/pvm_home.html), предложенная исторически ранее MPI (проект –1989, реализация – 1991 г.). PVM стандартизирует не только ин- терфейс программиста (набор и содержание предоставляемых функций), но и интерфейс пользователя (команды пользователя, вводимые с клавиатуры для управления параллельной программы), [4]. Функции PVM предоставля- ются общедоступной библиотекой, существуют реализации PVM для самых различных платформ.
Страницы
- « первая
- ‹ предыдущая
- …
- 101
- 102
- 103
- 104
- 105
- …
- следующая ›
- последняя »