[MPI3 Fortran] Results of San Jose Forum meeting
longb at cray.com
Sat Mar 13 14:59:44 CST 2010
Rolf Rabenseifner wrote:
> a short question: If an MPI library implementation declares the
> MPI routines as bind C, is then the internal call mechanism
It is between the Fortran compiler and its companion C compiler, as long
as each argument is "interoperable" as specified in the Fortran
standard. The limitation of compatibility only between companion
processors is key. It is not required (or even practical) that a
Fortran compiler be compatible with a C compiler it does not know about.
Typically, this results in two camps:
1) The Fortran compiler vendor also supplies a C compiler, in which case
the companion C compiler is its own. This is common, and the most
robust option since the vendor controls both compilers, and probably
uses a common compiler back-end. Such a vendor may choose to support
additional companion C processors, as long as there is some mechanism to
specify which one at compile time.
2) The Fortran compiler vendor does not supply its own C compiler, in
which case the usual selection of the companion C compiler is gcc. This
selection is not required by the standard - but it is practical.
Normally, vendor-supplied MPI libraries will have been compiled with a
known companion C compiler, so things should work.
> Or identical with all C compilers because the handle call by
> reference for integers and structurs identical?
> Best regards
> ----- "Aleksandar Donev" <adonev at lbl.gov> wrote:
>>> I hope that these citations are correct in relation to the official
>>> Fortran 2003 standard.
>> Sure, it all is more or less right.
>>> Based on this, for use mpi and use mpi3, only one identical
>>> backend (written in C) should be necessary.
>> OK, fine, but that is not implied by the words you quoted. For
>> it is perfectly possible (plausible) for an integer and a struct to be
>> passed differently (e.g., integer goes in register, the struct on the
>> stack), and adding SEQUENCE does nothing to change that. If you are
>> relying on some "backend" (meaning, really, ABI) property, say so, do
>> not pretend that the Fortran standard guarantees something it does
>> This is not to say that it will not be possible to still use one
>> even if the interface says TYPE(MPI_Comm) instead of INTEGER---but
>> is outside the scope of the Fortran standard. One should instead look
>> ABIs and conventions compilers use to pass such arguments around.
>> mpi3-fortran mailing list
>> mpi3-fortran at lists.mpi-forum.org
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