Compartilhar via


função MPI_Iallreduce

Combina valores de todos os processos e distribui o resultado de volta para todos os processos de maneira não bloqueada.

Sintaxe

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

Parâmetros

  • sendbuf [in, opcional]
    O ponteiro para os dados a serem enviados para todos os processos no grupo. O número e o tipo de dados dos elementos no buffer são especificados nos parâmetros count e datatype .

    Se o parâmetro comm referenciar um intracomunicador, você poderá especificar uma opção in-loco especificando MPI_IN_PLACE em todos os processos. Nesse caso, os dados de entrada são obtidos em cada processo do buffer de recebimento, em que serão substituídos pelos dados de saída.

  • recvbuf [out, opcional]
    O ponteiro para um buffer para receber o resultado da operação de redução.

  • count [in]
    O número de elementos a serem enviados desse processo.

  • datatype [in]
    O tipo de dados de cada elemento no buffer. Esse parâmetro deve ser compatível com a operação, conforme especificado no parâmetro op .

  • op [in]
    A operação de redução global a ser executada. O identificador pode indicar uma operação interna ou definida pelo aplicativo. Para obter uma lista de operações predefinidas, consulte MPI_Op.

  • comm [in]
    O MPI_Comm identificador do comunicador.

  • solicitação [out]
    O identificador MPI_Request que representa a operação de comunicação.

Retornar valor

Retorna MPI_SUCCESS em caso de êxito. Caso contrário, o valor retornado será um código de erro.

Em Fortran, o valor retornado é armazenado no parâmetro IERROR .

Fortran

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

Comentários

Uma chamada sem bloqueio inicia uma operação de redução coletiva que deve ser concluída em uma chamada de conclusão separada. Depois de iniciada, a operação pode progredir independentemente de qualquer computação ou outra comunicação nos processos participantes. Dessa forma, as operações de redução sem bloqueio podem atenuar possíveis efeitos de sincronização de operações de redução executando-as em "segundo plano".

Todas as chamadas de conclusão (por exemplo, MPI_Wait) têm suporte para operações de redução sem bloqueio.

Requisitos

Produto

Microsoft MPI v7

parâmetro

Mpi.h; Mpif.h

Biblioteca

Msmpi.lib

DLL

Msmpi.dll

Confira também

Funções coletivas de MPI

MPI_Datatype

MPI_Op

MPI_Allreduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome