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


функция MPI_Ireduce

Выполняет глобальную операцию уменьшения (например, sum, maximum или логическую и) для всех членов группы неблокирующим способом.

Синтаксис

int MPIAPI MPI_Ireduce(
  _In_      void         *sendbuf,
  _Out_opt_ void         *recvbuf,
  _In_      int          count,
  _In_      MPI_Datatype datatype,
  _In_      MPI_Op       op,
  _In_      int          root,
  _In_      MPI_Comm     comm,
  _Out_     MPI_Request  *request
);

Параметры

  • sendbuf [in]
    Указатель на буфер, содержащий данные из этого ранга, которые будут использоваться в сокращении. Буфер состоит из последовательных элементов MPI_Datatype , указанных дескриптором типа данных . Длина сообщения указывается с точки зрения количества элементов, а не количества байтов.

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

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

  • datatype [in]
    Дескриптор MPI_Datatype , представляющий тип данных каждого элемента в sendbuf.

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

  • root [in]
    Ранг принимающего процесса в MPI_Commком.

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

  • request [out]
    Дескриптор MPI_Request , представляющий операцию связи.

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

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

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

Fortran

    MPI_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR) 
        <type> SENDBUF(*), RECVBUF(*) 
        INTEGER COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR

Комментарии

Неблокирующий вызов инициирует коллективную операцию сокращения, которая должна быть завершена в отдельном вызове завершения. После запуска операция может выполняться независимо от любых вычислений или других взаимодействий в участвующих процессах. Таким образом, неблокирующие операции сокращения могут снизить возможные последствия синхронизации операций сокращения, выполняя их в "фоновом режиме".

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

Требования

Продукт

Microsoft MPI версии 6

Заголовок

Mpi.h; Mpif.h

Библиотека

Msmpi.lib

DLL

Msmpi.dll

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

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

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome