All,
I have a Fortran code that works quite well with OpenMPI 1.4.3 where I create a handle using:
call MPI_TYPE_CREATE_F90_INTEGER(9, COMM_INT4, ierror)
and then do a reduction with:
call MPI_ALLREDUCE(send_buffer, buffer, count, COMM_INT4, MPI_SUM, communicator, ierror)
However, this fails with OpenMPI 1.6.3 stating:
An error occurred in MPI_Allreduce: the reduction operation MPI_SUM is not defined for non-intrinsic datatypes (attempted with datatype named "Dup MPI_INT")
The MPI standard states that MPI_SUM works with Fortran integers, and Fortran integers are defined in Section 5.9.2 as:
MPI_INTEGER, MPI_AINT, MPI_OFFSET,
*and handles returned from
MPI_TYPE_CREATE_F90_INTEGER*,
and if available: MPI_INTEGER1,
MPI_INTEGER2, MPI_INTEGER4,
MPI_INTEGER8, MPI_INTEGER16
(emphasis mine)
However the manual page on MPI_Reduce for OpenMPI only states that Fortran integers are:
Fortran integer: MPI_INTEGER