Partilhar via


função MPI_Iallreduce

Combina valores de todos os processos e distribui o resultado de volta a todos os processos de forma 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 na memória intermédia são especificados nos parâmetros count e datatype .

    Se o parâmetro de comunicação fizer referência a um intracomunicador, pode especificar uma opção no local ao especificar MPI_IN_PLACE em todos os processos. Neste caso, os dados de entrada são recolhidos em cada processo da memória intermédia de receção, onde serão substituídos pelos dados de saída.

  • recvbuf [out, optional]
    O ponteiro para uma memória intermédia para receber o resultado da operação de redução.

  • count [in]
    O número de elementos a enviar a partir deste processo.

  • datatype [in]
    O tipo de dados de cada elemento na memória intermédia. Este parâmetro tem de ser compatível com a operação, conforme especificado no parâmetro op .

  • op [in]
    A operação de redução global a executar. O identificador pode indicar uma operação incorporada ou definida pela aplicação. Para obter uma lista de operações predefinidas, veja MPI_Op.

  • comm [in]
    O identificador do MPI_Comm communicator.

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

Valor devolvido

Devolve MPI_SUCCESS com êxito. Caso contrário, o valor devolvido é um código de erro.

Em Fortran, o valor devolvido é 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

Observações

Uma chamada sem bloqueio inicia uma operação de redução coletiva que tem de ser concluída numa chamada de conclusão separada. Uma vez iniciada, a operação pode progredir independentemente de qualquer computação ou outra comunicação nos processos participantes. Desta forma, as operações de redução sem bloqueio podem mitigar possíveis efeitos de sincronização das operações de redução ao executá-las em "segundo plano".

Todas as chamadas de conclusão (por exemplo, MPI_Wait) são suportadas para operações de redução sem bloqueio.

Requisitos

Produto

Microsoft MPI v7

Cabeçalho

Mpi.h; Mpif.h

Biblioteca

Msmpi.lib

DLL

Msmpi.dll

Ver 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