[MPI3 Fortran] MPI Data types
Iain Bason
Iain.Bason at Sun.COM
Sat May 9 13:53:13 CDT 2009
On May 9, 2009, at 1:56 PM, N.M. Maclaren wrote:
> On May 8 2009, Iain Bason wrote:
>>
>> I should add that some compilers (including Sun's) do a run time
>> check for contiguity, and only do copy in/out when it is actually
>> needed. I don't think that makes a difference for Nick's
>> argument, though.
>
> That's interesting. Something that I raised in J3 is that compilers
> may use copy-in/copy-out even when passing to assumed shape dummy
> arguments. Consider calls like:
>
> REAL :: X(1000,1000,10000)
> LinearSolve(X(1,:,:),X(2,3,:))
>
> That is most cache-unfriendly, and can often be speeded up
> considerably by
> copying the arrays to contiguous storage. Fortran permits that, in
> the
> absence of various special attributes. And, yes, it has been done
> and may
> still be done.
Yes, although we would generally do that inside the called routine
(i.e., the prologue and epilogue to LinearSolve in this case would do
the copies). A compiler might also do that to pad inner dimensions to
avoid thrashing TLB, for instance.
Iain
More information about the mpiwg-fortran
mailing list