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 Все права принадлежат авторам размещенных материалов.
|