[Mpi-forum] Did we screw up the const bindings in MPI-3?

Pavan Balaji balaji at mcs.anl.gov
Wed May 22 23:17:40 CDT 2013


Some of our users complained that Tau doesn't work with the latest
version of mpich.  After some investigation we discovered that this was
an issue with the MPI-3 standard.  Specifically, we added const bindings
for many of the MPI functions.  The thinking in the Forum was that this
change is backward compatible since applications using MPI_Send don't
have to change at all.  However, this seems to be causing problems for
tools that redefine MPI functions.  Basically, a tool can no longer have
a function like this:

int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int
tag, MPI_Comm comm)
	/* Do magic */
	ret = PMPI_Send(...);
	/* Do some more magic */

	return ret;

The compiler will complain that this doesn't match the prototype in
mpi.h which is:

int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int
dest, int tag, MPI_Comm comm);

Am I missing something here?  Are all tools now required to have an #if
MPI_VERSION >= 3 check?  Does this mean that all existing tools are now
broken for MPI-3 implementations?

 -- Pavan

Pavan Balaji

More information about the mpi-forum mailing list