[MPI3 Fortran] Specify IN/OUT/INOUT in MPI spec?
Jeff Squyres
jsquyres at cisco.com
Wed May 27 19:47:11 CDT 2009
On May 26, 2009, at 3:10 PM, Bill Long wrote:
> > "I note that none of the current Fortran API interface
> specifications
> > in MPI-2.1 list the intent of the parameters. Do we want to update
> > all of MPI in 3.0 to list the INTENT, and/or use "more modern
> Fortran
> > notation""
> >
> > Yes, please!
>
> I'll second that. Intents are a good idea in general. One caution:
> One
>
Hubert / Rolf / Craig -- do you guys agree that this is a Good Thing
to do for MPI-3?
> > We should also consider whether BIND(C) and other C
> interoperability features should be used (especially the KIND values
> from ISO_C_BINDING that correspond to C types.)
>
There's been extensive discussion about this (e.g., use of BIND(C)) --
I'll let the other more-Fortran-knowledgeable MPI guys comment on
these ideas...
> Using bind(c) and some other modern features - the VALUE attribute
> could
> be used beneficially in many instances - does have the the side effect
> that having the interface visible (i.e. including the USE MPI
> statement)
> is required rather than optional. That would involve a level of user
> awareness that is greater than if you only use features that do not
> require explicit interfaces. Some compilers have an "automatic use"
> option that would avoid having to modify existing user sources, but I
> don't think this is universally available. I'm all in favor of using
> the modern stuff. I just want to make sure we have 'full disclosure'
> on
> what that involves.
>
> Another side effect of users including USE MPI with interfaces that
> include intent specs: some codes that start to experience compile-
> time
> errors. Granted, the code was wrong all along, and the compiler is
> now
> able to detect that. In the end this is a good thing, but the initial
> response is "but it worked before" (or so they thought).
>
With MPI-3 being a major revision number change, we're open to at
least some of this kind of stuff.
FWIW, Open MPI has an "mpi" module with INTENT specifications. I
don't know what the other MPI implementations do in their "mpi"
module. To be clear: the MPI spec currently *allows* you to use
INTENT in your "mpi" module; it just doesn't *require* it.
--
Jeff Squyres
Cisco Systems
More information about the mpiwg-fortran
mailing list