[MPI3 Fortran] Non-contiguous arrays (was Re: Argument data sizes)
Aleksandar Donev
donev1 at llnl.gov
Thu Sep 18 12:44:35 CDT 2008
On Thursday 18 September 2008 10:35, Supalov, Alexander wrote:
> I think, technically, copy-in/out might occur on the subroutine boundary
> in this case.
A copy in/out can formally be disallowed by adding the TARGET, VOLATILE, or
ASYNCHRONOUS attribute on the dummy and on the actual. For the non-blocking
calls, this is what we should do (I would argue for both TARGET and
VOLATILE---it is only in the interface so it doesn't affect any
optimization). For the non-blocking, a copy is technically allowed (and
should be), but no sane compiler would do it for a 32GB array (or if it does,
it will stop doing that when the customers call).
Also note that Fortran 2008 has a new CONTIGUOUS attribute which may be useful
in the MPI interface (or the "Modern Fortran MPI Interface" that Craig and I
mentioned already)...
Best,
Aleks
--
Aleksandar Donev, Ph.D.
Lawrence Postdoctoral Fellow @ Lawrence Livermore National Laboratory
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