MPI_Reduce

Данная функция выполняет коллективную операцию во всех процессах группы и помещает результат в процесс с рангом root.

Формат вызова: MPI_Reduce (&sendbuf, &recvbuf, count, datatype, op, root, comm)

Встроенных коллективных операций в MPI насчитывается 12:

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_MAX, MPI_MIN - целые и вещественные

MPI_SUM, MPI_PROD - целые, вещественные (комплексные - для Фортрана)

MPI_LAND, MPI_LOR, MPI_LXOR - целые

MPI_BAND, MPI_BOR, MPI_BXOR - целые и типа MPI_BYTE

MPI_MAXLOC, MPI_MINLOC – вещественные

MPI_Allreduce

Применяет коллективную операцию и рассылает результат всем процессам в группе. Формат вызова: MPI_Allreduce (&sendbuf, &recvbuf, count, datatype, op, comm)

MPI_Reduce_scatter

Функция применяет вначале коллективную операцию к векторам всех процессов в группе, а затем результирующий вектор разбивается на непересекающиеся сегменты, которые распределяются по процессам. Данная операция эквивалентна вызову функции MPI_Reduce, за которым производится вызов MPI_Scatter. Формат вызова: MPI_Reduce_scatter (&sendbuf, &recvbuf, recvcount, datatype, op, comm)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: