Передача данных от всех процессов одному процессу. Операции редукции
В операции передачи данных от всех процессов одному процессу над собираемыми значениями осуществляется та или иная обработка данных (для подчеркивания последнего момента данная операция еще именуется операцией редукции данных). Как и ранее, реализация операции редукции при помощи обычных парных операций передачи данных является неэффективной и достаточно трудоемкой. Для наилучшего выполнения действий, связанных с редукцией данных, в MPI предусмотрена функция:
int MPI_Reduce(void *sendbuf, void *recvbuf,int count,MPI_Datatype type, MPI_Op op,int root,MPI_Comm comm),
где
- sendbuf- буфер памяти с отправляемым сообщением,
- recvbuf– буфер памяти для результирующего сообщения (только для сса с рангом root),
проце- count- количество элементов в сообщениях,
- type– тип элементов сообщений,
- op- операция, которая должна быть выполнена над данными,
- root- ранг процесса, на котором должен быть получен результат,
- comm- коммуникатор, в рамках которого выполняется операция.
В качестве операций редукции данных могут быть использованы предопределенные в MPI операции – см. табл. 3.4.5.1.1.
Таблица 3.4.5.1.1. Базовые (пpедопpеделенные) типы операций MPI для функций редукции данных
MPI_MAX максимум
MPI_MIN минимум
MPI_SUM сумма
MPI_PROD произведение
MPI_LAND логическое И
MPI_BAND поразрядное И
MPI_LOR логическое ИЛИ
MPI_BOR поразрядное ИЛИ
MPI_LXOR логическое ИЛИ-НЕ
MPI_BXOR поразрядное ИЛИ-НЕ
MPI_MAXLOC значение максимума и локализация
MPI_MINLOC значение минимума и локализация
Дата добавления: 2015-02-03; просмотров: 955;