


| MPI_IREDUCE(sendbuf, recvbuf, count, datatype, op, root, comm, request) | |
| IN sendbuf | address of send buffer (choice) | 
| OUT recvbuf | address of receive buffer (choice, significant only at root) | 
| IN count | number of elements in send buffer (non-negative integer) | 
| IN datatype | data type of elements of send buffer (handle) | 
| IN op | reduce operation (handle) | 
| IN root | rank of root process (integer) | 
| IN comm | communicator (handle) | 
| OUT request | communication request (handle) | 
 
  int MPI_Ireduce(const void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, MPI_Request *request) 
  
 
  MPI_Ireduce(sendbuf, recvbuf, count, datatype, op, root, comm, request, ierror) 
 TYPE(*), DIMENSION(..), INTENT(IN), ASYNCHRONOUS :: sendbuf 
TYPE(*), DIMENSION(..), ASYNCHRONOUS :: recvbuf 
INTEGER, INTENT(IN) :: count, root 
TYPE(MPI_Datatype), INTENT(IN) :: datatype 
TYPE(MPI_Op), INTENT(IN) :: op 
TYPE(MPI_Comm), INTENT(IN) :: comm 
TYPE(MPI_Request), INTENT(OUT) :: request 
INTEGER, OPTIONAL, INTENT(OUT) :: ierror 
  
  MPI_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR) 
 <type> SENDBUF(*), RECVBUF(*) 
INTEGER COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR 
  
This call starts a nonblocking variant of MPI_REDUCE (see Section Reduce ).
 
 
 
 Advice  
        to implementors.  
 
The implementation is explicitly allowed to use different algorithms for  
blocking and nonblocking reduction operations that might change the  
order of evaluation of the operations. However, as for  
 MPI_REDUCE, it is strongly recommended that  
 MPI_IREDUCE be implemented so that the same result be  
obtained whenever the function is applied on the same arguments,  
appearing in the same order. Note that this may prevent optimizations  
that take advantage of the physical location of processes.   
 ( End of advice to implementors.) 
 
 
 
 Advice to users.  
 
For operations which are not truly associative, the result delivered  
upon completion of the nonblocking reduction may not exactly equal the  
result delivered by the blocking reduction, even when specifying the  
same arguments in the same order.   
 ( End of advice to users.) 
 


