Здавалка
Главная | Обратная связь

MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm)



IN sendbufадрес посылающего буфера

OUT recvbufадрес принимающего буфера (исп-ся только корневым процессом)

IN countколичество элементов в посылающем буфере (целое)

IN datatypeтип данных элементов посылающего буфера

IN opоперация редукции

IN rootномер главного процесса (целое)

IN commкоммуникатор

Базовые (предопределенные) типы операций MPI

Входной и выходной буфер на всех процессах одинаковой длины и одного типа данных. Каждый процесс может содержать один элемент или последовательность (массив) элементов, в этом случае операция выполняется над всеми элементами этой последовательности.

Пример выполнения операции суммирования элементов массива для 3-ех процессов (в каждом массиве по 4 элемента, сообщения собираются на процессе с рангом 2)

Операции MPI_MINLOC и MPI_MAXLOC

Операции MPI_MINLOC/MPI_MAXLOCиспользуются для определения глобального минимума/максимума и соответствующих им индексов. Каждый процесс предоставляет значение и свой номер в группе. Операция редукции с op = MPI_MAXLOCвозвратит значение максимума и номер первого процесса с этим значением. Аналогично, MPI_MINLOCвозвратит значение минимума и номер процесса, если процессов с таким значением несколько будет возвращен номер первого.

Чтобы использовать MPI_MINLOCи MPI_MAXLOCв операции редукции, нужно определить тип данных datatype,который представляет пару (значение и индекс). MPI предоставляет девять таких предопределенных типов данных – 3 фортрана и 6 Си:

MPI_FLOAT_INT переменные типа float и int

MPI_DOUBLE_INT переменные типа double и int

MPI_LONG_INT переменные типа long и int

MPI_2INT пара переменных типа int

MPI_SHORT_INT переменные типа short и int

MPI_LONG_DOUBLE_INT переменные типа long double и int







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.