next up previous contents
Next: Функция Scan Up: Коллективные взаимодействия процессов Previous: Функция All-Reduce   Contents

Функция Reduce-Scatter

MPI имеет варианты каждой из операций редукции, когда результат рассылается всем процессам в группе в конце операции.

Синтаксис функции MPI_REDUCE_SCATTER представлен ниже.

MPI_REDUCE_SCATTER(sendbuf, recvbuf, recvcounts, datatype, op, comm)

IN sendbuf начальный адрес буфера посылки (альтернатива)
OUT recvbuf начальный адрес буфера приема (альтернатива)
IN recvcounts целочисленный массив, определяющий количество элементов результата, распределенных каждому процессу. Массив должен быть идентичен во всех вызывающих процессах.
IN datatype тип данных элементов буфера ввода (дескриптор)
IN op операция (дескриптор)
IN comm коммуникатор (дескриптор)

int MPI_Reduce_scatter(void *sendbuf, void *recvbuf,
int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)

MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS,
DATATYPE, OP, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR

void Intracomm::Reduce_scatter(const void* sendbuf, void* recvbuf,
int recvcounts[], const Datatype& datatype, const Op& op) const

Функция MPI_REDUCE_SCATTER сначала производит поэлементную редукцию вектора из count = $\sum_i $ recvcount[i] элементов в буфере посылки, определенном sendbuf, count и datatype. Далее полученный вектор результатов разделяется на n непересекающихся сегментов, где n - число членов в группе. Сегмент i содержит recvcount[i] элементов. i-й сегмент посылается i-му процессу и хранится в буфере приема, определяемом recvbuf, recvcounts[i] и datatype.

Совет разработчикам: Функция MPI_REDUCE_SCATTER функционально эквивалентна операции MPI_REDUCE с count, равным сумме recvcounts[i], за которой следует MPI_SCATTER с sendcount, равным recvcounts. Однако, прямая реализация может работать быстрее. []


next up previous contents
Next: Функция Scan Up: Коллективные взаимодействия процессов Previous: Функция All-Reduce   Contents
Alex Otwagin 2002-12-10