[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