Поделиться через


функция MPI_Allreduce

Объединяет значения из всех процессов и распределяет результат по всем процессам.

Синтаксис

int MPIAPI MPI_Allreduce(
  _In_opt_  const void         *sendbuf,
  _Out_opt_       void         *recvbuf,
  _In_            int          count,
  _In_            MPI_Datatype datatype,
  _In_            MPI_Op       op,
  _In_            MPI_Comm     comm
);

Параметры

  • sendbuf [in, необязательный]
    Указатель на данные, отправляемые всем процессам в группе. Число и тип данных элементов в буфере указываются в параметрах count и datatype.

    Если параметр comm ссылается на внутриобщий коммуникации, можно указать параметр на месте, указав MPI_IN_PLACE во всех процессах. В этом случае входные данные берутся в каждом процессе из буфера приема, где они будут заменены выходными данными.

  • recvbuf [out, optional]
    Указатель на буфер для получения результата операции сокращения. Этот параметр имеет значение только в корневом процессе.

  • count [in]
    Количество элементов, отправляемых из этого процесса.

  • datatype [in]
    MPI_Datatype каждого элемента в буфере. Этот параметр должен быть совместим с операцией, как указано в параметре op .

  • op [in]
    Дескриптор MPI_Op , указывающий операцию глобального сокращения. Дескриптор может указывать на встроенную или определяемую приложением операцию. Список предопределенных операций см. в разделе MPI_Op.

  • comm [in]
    Дескриптор коммуникатора MPI_Comm .

Возвращаемое значение

Возвращает MPI_SUCCESS при успешном выполнении. В противном случае возвращаемое значение представляет собой код ошибки.

В Fortran возвращаемое значение хранится в параметре IERROR .

Fortran

    MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER COUNT, DATATYPE, OP, COMM, IERROR

Комментарии

Если comm является интеркоммуникатором, результат сокращения данных, предоставляемых процессами в группе A, хранится в каждом процессе в группе B и наоборот. Обе группы должны предоставлять аргументы count и datatype , указывающие одну и ту же сигнатуру типа.

Все вызовы завершения (например, MPI_Wait) поддерживаются для неблокирующих операций сокращения.

Требования

Продукт

Распространяемый пакет HPC 2012 MS-MPI, пакет HPC 2008 R2 распространяемый пакет MS-MPI, пакет HPC 2008 MS-MPI или клиентские служебные программы пакета HPC 2008

Заголовок

Mpi.h; Mpif.h

Библиотека

Msmpi.lib

DLL

Msmpi.dll

См. также раздел

Коллективные функции MPI

MPI_Reduce

MPI_Datatype

MPI_Op