Re: [MPI3 Fortran] MPI buffer arguments - void and call-by-reference
Aleksandar, Yes, the call-by-reference problem is only a problem for non-blocking routines. With the blocking routines, there isn't a problem with copying. Especially with strided subarrays, copying is a feature, i.e., existing MPI code send such arrays with the MPI datatpye description "contiguous array". What you need also to know: I'm not a Fortran specialist. Therefore, it can be that one of the existing features already solve the MPI problems, and I do not know about. I expect, that TARGET, VOLATILE, and ASYNCHRONOUS have more implications on the optimization than an explicit requiring of call-by-reference on a routine call. My major concern: The current F77 behavior together with the Call-by-reference compiler option must be conserved. Are you also at the Fortran meeting together with Craig? Best regards Rolf On Mon, 9 Feb 2009 15:12:17 -0800 Aleksandar Donev <[email protected]> wrote:
On Monday 09 February 2009 14:59, Rolf Rabenseifner wrote:
� � Fortran compilers are allowed to choose call-by-incopy-and-outcopy instead of call-by-reference. There are already at least two cases where Fortran compilers are not allowed to choose. These are when both the actual and the dummy have the attribute: TARGET, VOLATILE, and ASYNCHRONOUS. Perhaps adding yet another attribute where the compiler does not have freedom is useful, but I am yet to be convinced.
So first I want to ask: Other than with non-blocking transfer (which was the subject of a separate message), what is the problem with copy in/out? If it is a performance issue, than that is within the realm of compiler optimization: As you said, the compiler has the choice and it will usually choose the faster (often compilers include a run time check to see if the actual is contiguous).
� � Meaning: Same as what currently done, i.e., call-by-reference � � on the caller side, if call-by-reference is possible (i.e., � � not for non-contiguous subarrays) What if call-by-reference is not possible? How is this different from what is currently there and why is it useful enough over what is already there to warrant inclusion in the Fortran standard?
Thanks, Aleks
-- Aleksandar Donev, Ph.D. Lawrence Postdoctoral Fellow @ Lawrence Livermore National Laboratory High Performance Computational Materials Science and Chemistry E-mail: [email protected] 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
Dr. Rolf Rabenseifner . . . . . . . . . .. email [email protected] High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530 University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832 Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner Nobelstr. 19, D-70550 Stuttgart, Germany . (Office: Allmandring 30)
participants (1)
-
Rolf Rabenseifner