[MPI3 Fortran] MPI buffer arguments - void and call-by-reference
Aleksandar Donev
donev1 at llnl.gov
Wed Feb 18 11:11:21 CST 2009
Hi Craig,
Since I wasn't in Vegas I will read the papers and try to reconstruct
what you guys talked about, and in particular, to understand why
"TYPE(*), DIMENSION(*)" was not a possibility (excluding scalar actuals
if necessary---handle that by a separate procedure if need be).
> interface
> subroutine MPI_Send(buf, ...) BIND(C)
> TYPE(*), DIMENSION(..), INTENT(in) :: buf
> ...
> end subroutine
> end interface
> I think using TYPE(*) and DIMENSION(..) is an excellent solution for MPI
> 3.0. The advantages are:
I am in agreement that this is a good solution.
BUT:
> 1. Current user code won't have to change beyond using the MPI3 module.
That makes no sense. If the array is passed by descriptor, there is
absolutely no need to also pass its size as an argument. Even the type,
at least for the set of predefined intrinsic interoperable types, does
not need to be passed.
Either we keep the interfaces as close to what they are
(pass-by-address), or, we refine them. Otherwise you get something that
neither satisfies existing codes/implementations nor does it satisfy
demanding users (read: me :-)
Best,
Aleks
--
Aleksandar Donev, Ph.D.
Lawrence Postdoctoral Fellow @ LLNL
High Performance Computational Materials Science and Chemistry
E-mail: donev1 at llnl.gov
Phone: (925) 424-6816 Fax: (925) 423-0785
Address: P.O.Box 808, L-367, Livermore, CA 94551-9900
Web: http://cherrypit.princeton.edu/donev
More information about the mpiwg-fortran
mailing list