Greg Lindahl wrote:
> I'm afraid I don't get it. An integer does the job, and unlike the C
> interface, you know what the type is, so you can generate object
> files which link to any MPI implementation.
I disagree. A thing that is not an integer should not be declared as an
integer. This caused problems in some implementations, just look at the
source code for mpich for example. Problems arose with 64-bit
platforms. The (default, possibly 32-bit) integer has to be converted
by the MPI implementation into a pointer (handle), and non-thread safe
dictionaries and other (IMO) very ugly code is used to convert the
integers to handles and vice versa. The Fortran 90 "binding" caused
even bigger issues...BTW, in Fortran 2008 we will allow IO units to be
opaque handles, rather than integers, for exactly the same reasons that
MPI handles should not be (default) integers. In any case, if you like
integers so much talk to the MPI Forum and make the C binding use an
integer. Then the F2003 one will also. Don't try to "fix" MPI C
bindings inside the Fortran bindings--that is going backwards!
But anyway, I think we have a fundamental disagreement/difference here.
You want to make this easiest for the compiler or Fortran user (compile
one object and link to any MPI implementation). But to support such
things requires work by both the MPI implementation team, and by the
MPI Forum. All of this work is IMO not needed and completely a waste of
time. Fortran (2003) can hook *directly* to the C binding, which in
most cases is the actual language of implementation. No (or little)
extra work done by anyone.
As a user, I find it painful than in order to get a proper MPI binding I
need to rely on 3 different groups of people doing the "right thing" in
time for me to use the product in my project:
1) MPI Forum needs to learn Fortran 90/2003 (which it never will, even
90...)
2) MPICH implementation team needs to learn Fortran, learn how various
Fortran compilers work, and implement wrappers, scripts, etc.
3) The Fortran vendor needs to cooperate also
What I am saying allows for two simplified steps:
1) MPI Forum designs their C binding
2) MPICH implements that C binding as well as they can
From there on, I can take over.
> Why would J3 care about the MPI standard?
You are right, it would not. What I was saying is that it would care
about whether the standard facilities it provides (C Interop) are
designed to allow easy and standard-conforming interfacing to something
like MPI. It is a test-case, a typical complex library that is widely
used. As I said, interfacing to OpenGL is *much* simpler. But MPI
brings forth a lot of issues which are more complex and require
thinking (VOLATILE, asynchronous, side effects, derived types,
type-genericity, rank-genericity, etc.).
> The Fortran 77 binding is a Fortran 77 binding.
Even that one is nonconforming to the Fortran 77 standard.
Aleks
|