There seems to be a problem with the newly included Fortran datatypes, at least with MPI_INTEGER4 and MPI_REAL4. Our code kept aborting at MPI_Reduce or MPI_Allreduce calls that had one of these as the sending datatype:
MPI_Reduce: invalid operation: Invalid argument (rank 0, MPI_COMM_WORLD)
Rank (0, MPI_COMM_WORLD): Call stack within LAM:
Rank (0, MPI_COMM_WORLD): - MPI_Reduce()
Rank (0, MPI_COMM_WORLD): - main()
When I changed the datatypes to MPI_INTEGER or MPI_REAL, everything was fine. This is a well-tested code with many different machines/compilers/MPI libraries, so I'm confident it is not a bug in the code. My quick fix was to modify mpif.h so that MPI_INTEGER4 had the same value as MPI_INTEGER, MPI_REAL4 had the same value as MPI_REAL, and MPI_REAL8 had the same value as MPI_DOUBLE_PRECISION. Actually, this is how I had always modified mpif.h in older versions of LAM anyway.
Matt
|