Коллективные коммуникации.
Для обеспечения коллективных коммуникаций введены следующие функции:
· барьер для всех членов группы (BARRIER);
· передача сообщения всем членам группы от одного (BROADCAST);
· сбор данных от всех членов группы для одного (GATHER);
· рассылка данных всем членам группы от одного (SCATTER);
· сбор данных от всех членов группы для всех (ALLGATHER);
· рассылка данных всем членам группы от всех (ALLTOALL);
· глобальные операции (сумма, максимум, и т.п.), когда результат сообщается всем членам группы или только одному. При этом пользователь может сам определить глобальную операцию - функцию;
Схема перемещения данных между 4 процессами
Данные
Pr-0
|
| A0
|
|
|
|
|
|
|
|
|
| A0
|
|
|
|
|
|
|
|
Pr-1
|
|
|
|
|
|
|
|
|
| BROADCAST
|
| A0
|
|
|
|
|
|
|
|
Pr-2
|
|
|
|
|
|
|
|
|
| è
|
| A0
|
|
|
|
|
|
|
|
Pr-3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| A0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pr-0
|
| A0
|
| A1
|
| A2
|
| A3
|
| SCATTER
|
| A0
|
|
|
|
|
|
|
|
Pr-1
|
|
|
|
|
|
|
|
|
| è
|
| A1
|
|
|
|
|
|
|
|
Pr-2
|
|
|
|
|
|
|
|
|
| GATHER
|
| A2
|
|
|
|
|
|
|
|
Pr-3
|
|
|
|
|
|
|
|
|
| ç
|
| A3
|
|
|
|
|
|
|
|
Pr-0
|
| A0
|
| B0
|
| C0
|
| D0
|
|
|
|
|
|
|
|
|
| A0
|
|
|
|
|
|
|
|
Pr-1
|
| A0
|
| B0
|
| C0
|
| D0
|
| ALLGATHER
|
| B0
|
|
|
|
|
|
|
|
Pr-2
|
| A0
|
| B0
|
| C0
|
| D0
|
| ç
|
| C0
|
|
|
|
|
|
|
|
Pr-3
|
| A0
|
| B0
|
| C0
|
| D0
|
|
|
|
|
|
|
|
|
| D0
|
|
|
|
|
|
|
|
<
/p>
Pr-0
|
A0
|
A1
|
A2
|
A3
|
|
|
|
|
A0
|
B0
|
C0
|
D0
|
Pr-1
|
B0
|
B1
|
B2
|
B3
|
ALLTOALL
|
A1
|
B1
|
C1
|
D1
|
Pr-2
|
C0
|
C1
|
C2
|
C3
|
è
|
A2
|
B2
|
C2
|
D2
|
Pr-3
|
D0
|
D1
|
D2
|
D3
|
|
|
|
|
A3
|
B3
|
C3
|
D3
|
Названия функций и параметры:
MPI_BARRIER(IN comm)
MPI_BCAST(IN/ OUT buffer, IN cnt, IN type, IN root, IN comm)
MPI_GATHER(IN sendbuf, IN sendcnt, IN sendtype, OUT recvbuf,
IN recvcnt, IN recvtype, IN root, IN comm)
MPI_SCATTER(IN sendbuf, IN sendcnt, IN sendtype, OUT recvbuf,
IN recvcnt, IN recvtype, IN root, IN comm)
MPI_ALLGATHER(IN sendbuf, IN sendcnt, IN sendtype,
OUT recvbuf, IN recvcnt, IN recvtype, IN comm)
MPI_ALLTOALL(IN sendbuf, IN sendcnt, IN sendtype, OUT recvbuf,
IN recvcnt, IN recvtype, IN comm)
PVM (Parallel Virtual Machine).
Широко известная система PVM [5] была создана для объединения нескольких связанных сетью рабочих станций в единую виртуальную параллельную ЭВМ. Система представляет собой надстройку над операционной системой UNIX и используется в настоящее время на различных аппаратных платформах, включая и ЭВМ с массовым параллелизмом.
Задача пользователя представляет собой множество подзадач, которые динамически создаются на указанных процессорах распределенной системы и взаимодействуют между собой путем передачи и приема сообщений (а также посредством механизма сигналов).
Достоинства - простота, наличие наследованного от OS UNIX аппарата процессов и сигналов, а также возможность динамического добавления к группе вновь созданных процессов.
Недостатки - низкая производительность и функциональная ограниченность (например, имеется только один режим передачи сообщений - с буферизацией).
Содержание раздела