MPI_Op op, int root, MPI_Comm comm)

где

sendbuf – буфер памяти с отправляемым сообщением;

recvbuf – буфер памяти для результирующего сообщения (только для процесса с рангом root);

count – количество элементов в сообщениях;

type – тип элементов сообщений;

op – операция, которая должна быть выполнена над данными;

root – ранг процесса, на котором должен быть получен результат;

comm – коммуникатор, в рамках которого выполняется операция.

В качестве параметра op могут быть использованы предопределенные в 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 – определение минимальных значений и их индексов.

Помимо данного стандартного набора операций пользователем могут быть определены и новые дополнительные операции (см. документацию по библиотеке MPI).

Общая схема выполнения операции сбора и обработки данных изображена на следующем рисунке.

 

 


Также следует отметить следующее:

1. Функция MPI_Reduce определяет коллективную операцию и, тем самым, вызов функции должен быть выполнен всеми процессами указываемого коммуникатора, все вызовы функции должны содержать одинаковые значения параметров count, type, op, root, comm.

2. Передача сообщений должна быть выполнена всеми процессами, результат операции будет получен только процессом с рангом root.

3. Выполнение операции редукции осуществляется над отдельными элементами передаваемых сообщений. Так, например, если сообщения содержат по два элемента данных и выполняется операция суммирования MPI_SUM, то результат также будет состоять из двух значений, первое из которых будет содержать сумму первых элементов всех отправленных сообщений, а второе значение будет равно сумме вторых элементов сообщений соответственно (см. рисунок).

 

 


Наряду с функцией MPI_Reduce, в библиотеке MPI есть функция MPI_Allreduce, которая выполняет редукцию данных, после чего рассылает результаты редукции всем процессам. Студентам предлагается самостоятельно исследовать возможности данной функции.

 








Дата добавления: 2016-02-02; просмотров: 804;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.