(j3.2006) More on "contiguous"
Tue May 15 17:59:07 EDT 2007
It is certainly useful to know that more that the first dimension is
contiguous. This allows the compiler to collapse loops (actual or
implied). This is one of the primary reasons for contiguous. If you
know that the leftmost dimension of the array D is contiguous, but other
dimensions might not qualify, then you could associate a contiguous
pointer with D(:,i) and reference the pointer.
I'd be skeptical of the claim by gprof that the statement D(:,i) = 0
consumes 8.8% of a program's time unless the value of n is really large
and there is not much else happening in the program. The performance
for that statement is probably limited by the hardware memory bandwidth,
pretty much independent of how much optimizing a reasonable compiler is
Van Snyder wrote:
>Does "contiguous" make any sense and confer any benefit for other than
>the first dimension?
>I have a dummy argument array D(:,:). I know the actual argument is
>contiguous in the first dimension because it's a section A(:n,:) of an
>The line-by-line profile says I'm spending 8.8% of a 25 hour run on one
>statement "D(:,i) = 0.0" -- unless I'm not interpreting the profiler's
>output correctly. I assume that by reporting line 312, gprof is telling
>me the basic block beginning (or ending?) at that line is what's being
>reported. Since the previous line is a DO statement and the next one is
>an IF statement, I assume the reported time is all spent at this line.
>The array D wouldn't be contiguous as a whole according to our current
>definition, but I suspect it would be helpful if the processor knew the
>first dimension were contiguous. Is it ever helpful to know that more
>dimensions are contiguous? If not, can/should we change the definition
>of "contiguous" to apply only to the first dimension?
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120
More information about the J3