[MPI3 Fortran] [Mpi-comments] MPI 3.0:Fortran 2008 interface - issue with the LOGICAL kind

Craig Rasmussen rasmus at cas.uoregon.edu
Fri Mar 15 20:01:34 CDT 2013

On Mar 14, 2013, at 2:14 PM, Rolf Rabenseifner wrote:

> Dear all,
> I would like to learn
> - Who is implementing the new mpi_f08 module 
>    -- for mpich?
>         Is this you, Bill Long?
>    -- for OpenMPI?
>         Is this you, Craig?

Jeff and I have done the Open MPI implementation.  

>    -- who else is currently implementing the 
>       new Fortran mpi_f08 module?
> - Do I understand correctly that both implementations:
>    -- do use Fortran-written wrappers as MPI user-API?

We use thin Fortran wrappers that call the original Open MPI Fortran wrappers (mpif.h).  For performance reasons we will switch to thin Fortran wrappers calling the C implementation directly for some routines latter.

>    -- I.e., it is simple to change it to BIND(C) or non-BIND(C)?

We use macro magic to turn BIND(C) on and off so it is not hard for us to change.

>    -- I.e., only for the tools people, it is of 
>       interest whether BIND(C) or non-BIND(C) was chosen?

BIND(C) provides a well known name for the tools people to implement and removes the underscore compiler dependent issue.

Rolf, is an implementation compliant if Fortran wrappers are used in a module to call C directly so that the tools community can't intercept the call in Fortran?  Does this break any current tools implementations?  I assume it does as I believe the MPI standard requires that a Fortran MPI user be able to intercept the MPI call in Fortran and then call MPI.

>    -- What are other implementations do?
> I ask this, to learn whether the BIND(C)/non-BIND(C) freedom 
> for the implementations can/should be reduced
> to make life easier.
> The current proposal #364 is based on minimal restrictions
> based on the missing C-interoperability of LOGICAL.
> I expect, that life can be more simple if we make more
> restrictions, e.g., same BIND(C) roule for all routine groups
> (this would mean no BIND(C) in the moment).

I would like to argue for a solution that would allow BIND(C) to be used within 10 years to remove ALL requirements for the tools community to handle the underscore problem.


More information about the mpiwg-fortran mailing list