Re: [MPI3 Fortran] [Mpi-comments] MPI 3.0: Fortran 2008 interface - issue with the LOGICAL kind
Yes, this was also my intention. The Fortran compiler doesn't check any interoperability issues since it can assume that a Fortran interoperability is guaranteed by the underlying subroutine/function. The Fortran compiler uses the specified name to reference the subroutine/function. All. other interoperability are solved by the function/subroutine such as in the non BIND(C) case and such as currently solved by the MPI libraries. Hubert ________________________________________ From: [email protected] [[email protected]] on behalf of Bill Long [[email protected]] Sent: Thursday, March 21, 2013 8:47 PM To: [email protected] Subject: Re: [MPI3 Fortran] [Mpi-comments] MPI 3.0: Fortran 2008 interface - issue with the LOGICAL kind My perspective was that the only functionality here is to specify an alternate external name for the Fortran procedure. I assume that the caller and callee are compiled with the same compiler, so that the issues around vendor-specific calling conventions are not a problem. (This is why I preferred the NAME( .. ) form, since it omits any concept of a binding different from the normal conventions for the processor, except the name.) Cheers, Bill On 3/21/13 2:13 PM, Tobias Burnus wrote:
Craig Rasmussen wrote:
BIND(FORTRAN, name="MPI_Test_f08") seems like a great idea. Unfortunately I can't find it in the Fortran standard :-(
I have to admit that I do not really see the advantage of having such a binding name. Surely, it voids issues to find out about the name mangling of a compiler. But besides the mangling, different compilers also handle other things differently: * Function results: By return value or as by-reference argument. Especially for COMPLEX * Handling of string lengths - especially for character arrays * Array descriptors - might be different from the TS29113 array descriptor * etc.
In case of BIND(C), most of the ABI issues is defined by the platform ABI together with the C standard, which mostly solves the interop issues between different C compiler and different Fortran compilers for BIND(C) procedures. But NAME()/Bind(Fortran) doesn't.
With all those issues, I do not really see how NAME(...) or BIND(Fortran,name=...) would help - except in very special cases.
Tobisa _______________________________________________ mpi3-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
-- Bill Long [email protected] 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 _______________________________________________ mpi3-fortran mailing list [email protected] http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran Click https://www.mailcontrol.com/sr/qAqGokvOpYnGX2PQPOmvUsPk3Ki21lNCN8bSIIHOpu6sI... to report this email as spam.
participants (1)
-
Hubert Ritzdorf