MPI_Iallreduce función
Combina valores de todos los procesos y distribuye el resultado a todos los procesos de forma no bloqueada.
Sintaxis
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]
Puntero a los datos que se van a enviar a todos los procesos del grupo. El número y el tipo de datos de los elementos del búfer se especifican en los parámetros count y datatype .Si el parámetro comm hace referencia a un intracomunicador, puede especificar una opción local especificando MPI_IN_PLACE en todos los procesos. En este caso, los datos de entrada se toman en cada proceso del búfer de recepción, donde se reemplazarán por los datos de salida.
recvbuf [out, optional]
Puntero a un búfer para recibir el resultado de la operación de reducción.count [in]
Número de elementos que se van a enviar desde este proceso.datatype [in]
Tipo de datos de cada elemento del búfer. Este parámetro debe ser compatible con la operación tal como se especifica en el parámetro op .op [in]
Operación de reducción global que se va a realizar. El identificador puede indicar una operación integrada o definida por la aplicación. Para obtener una lista de las operaciones predefinidas, consulte MPI_Op.comm [in]
Identificador del comunicador MPI_Comm.request [out]
Identificador de MPI_Request que representa la operación de comunicación.
Valor devuelto
Devuelve MPI_SUCCESS si se realiza correctamente. De lo contrario, el valor devuelto es un código de error.
En Fortran, el valor devuelto se almacena en el parámetro IERROR .
Fortran
MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR
Comentarios
Una llamada sin bloqueo inicia una operación de reducción colectiva que debe completarse en una llamada de finalización independiente. Una vez iniciada, la operación puede avanzar independientemente de cualquier cálculo u otra comunicación en los procesos participantes. De esta manera, las operaciones de reducción sin bloqueo pueden mitigar los posibles efectos de sincronización de las operaciones de reducción mediante su ejecución en "segundo plano".
Todas las llamadas de finalización (por ejemplo, MPI_Wait) se admiten para las operaciones de reducción de no bloqueo.
Requisitos
Producto |
Microsoft MPI v7 |
Encabezado |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
Archivo DLL |
Msmpi.dll |