Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2


int MPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype



Pdf көрінісі
бет19/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   15   16   17   18   19   20   21   22   ...   53
ParProg MPI OpenMP

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 операции (таблица 2.2). 
 
Таблица 2.2. Базовые (предопределенные) 
типы операций MPI для функций редукции данных
 
Операции 
Описание 
MPI_MAX 
Определение 
максимального 
значения 
MPI_MIN 
Определение 
минимального 
значения 
MPI_SUM 
Определение суммы значений 
MPI_PROD 
Определение 
произведения 
значений 
Элементы получаемого сообщения на процессе root представляют 
собой результаты обработки соответствующих элементов передаваемых 
процессами сообщений, т.е.: 
где есть операция, задаваемая при вызове 
функции MPI_Reduce (для пояснения на рисунке 2.3
показан пример 
выполнения функции редукции данных). 
Следует отметить: 


24 
функция MPI_Reduce определяет коллективную операцию, и, тем 
самым, вызов функции должен быть выполнен всеми процессами 
указываемого коммуникатора. При этом все вызовы функции должны 
содержать одинаковые значения параметров count, type, op, root, comm; 
• передача сообщений должна быть выполнена всеми процессами
результат операции будет получен только процессом с рангом root; 
• выполнение операции редукции осуществляется над отдельными 
элементами передаваемых сообщений. Так, например, если сообщения 
содержат по два элемента данных и выполняется операция суммирования 
MPI_SUM, то результат также будет состоять из двух значений, первое из 
которых будет содержать сумму первых элементов всех отправленных 
сообщений, а второе значение будет равно сумме вторых элементов 
сообщений соответственно. 
Рис. 2.2. Общая схема операции сбора и обработки на одном процессе 
данных от всех процессов 


Достарыңызбен бөлісу:
1   ...   15   16   17   18   19   20   21   22   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет