[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