[MPI3 Fortran] New Fortran proposal w.r.t. BIND(C)/logical/etc.

Bill Long longb at cray.com
Wed Apr 24 09:46:22 CDT 2013



On 4/24/13 8:41 AM, Jeff Squyres (jsquyres) wrote:
> On Apr 24, 2013, at 9:36 AM, Bill Long <longb at cray.com> wrote:
>
>>> You're imposing a specific implementation scheme.  We can't allow that in the MPI spec.
>>
>> I disagree with the first sentence.  I'm wanting to merely ALLOW a new scheme (which is  better one that the current lot, in my opinion).
>
> Rolf's proposal mandates 3 specific implementation schemes.  So I should have said "Rolf", not "you".  :-)
>
>> So you are saying that disallowing better implementations is part of the mandate of the MPI spec?
>
> Don't be like that.
>

I didn't mean to be mean. The Fortran standard has a lot of instances of 
disallowing things, and I was not sure if the same was true of MPI.
  [I'm in the middle of a symposium all day today, so sorry about not 
being prompt with replies.]

>>> One of the reasons I really, really dislike Rolf's proposal text is that it mandates one of three implementation choices.  Not only does the MPI standard specifically stay away from all implementation issues in normative text, none of the 3 implementation choices that Rolf outlined are how Open MPI is implemented.
>>
>> Then I see that as a problem.  We should be looking at ways to allow the OpenMPI implementation rather than prohibiting implementations that are different.
>
>
> The MPI spec takes great pains to not mandate any particular implementation at all.
>

My view (inexperienced as it is) is that this section is mainly about 
specifying what symbol names need to be available so that the tools know 
what to look for/intercept.  I'd be in favor of just listing the names 
and characteristics without commentary about how they get produced (i.e. 
remove the discussion about the implementation detail).  Something like 
to following:

Class 1:  For an MPI routine MPI_xxx with a void * choice argument, or 
with no choice argument, the implementation shall provide at AT LEAST 
ONE of the following:

1) An external with the C name MPI_xxx and C calling conventions as 
specified in the C prototype in Annex A.

2) An external with the name "......" that uses the Fortran calling 
conventions and has INTEGER handle arguments, as specified in Annex A.

3) An external with the name "....." that uses the Fortran calling 
conventions and has derived type handle arguments, as specified in Annex A.


Class 2: For an MPI routine MPI_xxx with a descriptor choice argument, 
the implementation shall provide AT LEAST ONE of the following:

1) An external with the C name MPI_xxx_cdesc and C calling conventions...

2), 3) Similar to above.

With rules like these, a tool would have a small list of names to look 
for, and the correct calling information about each.

Cheers,
Bill



-- 
Bill Long                                           longb at cray.com
Fortran Technical Support    &                 voice: 651-605-9024
Bioinformatics Software Development            fax:   651-605-9142
Cray Inc./Cray Plaza, Suite 210/380 Jackson St./St. Paul, MN 55101





More information about the mpiwg-fortran mailing list