[mpiwg-p2p] Removing Fortran datatypes from mpi.h when there is no Fortran support

Jeff Squyres (jsquyres) jsquyres at cisco.com
Sat Apr 23 07:30:01 CDT 2016


https://github.com/mpiwg-p2p/p2p-issues/issues/1#issuecomment-213727928 captures the straw votes from the March 2016 Forum meeting where we discussed removing Fortran datatypes from mpi.h when there is no Fortran support.  

Three things were decided:

1. Yes, we should remove Fortran datatypes when no Fortran support is available.

2. The datatypes should be removed altogether (e.g., MPI_INTEGER won't be defined in mpi.h at all).

   --> After the meeting, it was pointed out that we also need to remove MPI_F[08]_STATUS[ES]_IGNORE from mpi.h, too.  Good point.

3. There should be an additional #define indicating that there are no
Fortran datatypes available.

   --> I propose have a macro named MPI_FORTRAN_BINDINGS_SUPPORTED.
It will always be defined, but it will have a value of 1 if any of the
3 flavors of MPI Fortran bindings are supported, and therefore the
corresponding Fortran entities are declared in mpi.h (e.g.,
MPI_INTEGER).  It will have a value of 0, otherwise.

=========

One additional question has come up, however: what about the MPI_*_(F2C|C2F) functions?  I see two options:

1. They should not be declared (just like MPI_INTEGER)

2. They should be defined to return specific values. E.g., if you are running with an implementation that has no Fortran support, calling MPI_Comm_f2c(0) would return MPI_DATATYPE_NULL.  Similarly, calling MPI_Comm_c2f(MPI_COMM_WORLD) would return an invalid handle.

It's not quite clear why an MPI application would be calling C2F or F2C functions if there's no Fortran support, but one way or another, we have to handle this case.

I think I'm in favor of not declaring the MPI_*_(F2C|C2F) functions.

Thoughts?

-- 
Jeff Squyres
jsquyres at cisco.com
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/




More information about the mpiwg-p2p mailing list