matmul, dotprod, transpose performance patch proposal
Tim Prince
tprince@myrealbox.com
Thu Aug 25 09:54:00 GMT 2005
Tim Prince wrote:
> I have been examining performance improvements which can be obtained
> by 1st step optimizations of these intrinsics. I'm sure it's no
> secret, that a performance increase can be obtained by usual methods:
>
> matmul_r[48]: unroll and jam the stride 1 loops, combining 2 outer
> loop iterations in one inner loop. For Pentium-M, but not for Xeon,
> Opteron, or Itanium, a much bigger boost is obtained by using 2
> parallel dot products. Change the general stride case to dot product,
> dictating the strength reduction which gfortran misses. 20% to 100%
> gain in performance
>
> dotprod_r[48]: unroll, performing addition in pairs first, before
> adding to sum accumulation, effectively cutting the performance
> limitation due to latency of addition in half. Typical 30%
> performance gain
>
> transpose: swap inner and outer loops, so the small stride (normally
> 1) occurs on the destination rather than the source side, taking
> advantage of Write Combine buffering, where present. This should be
> faster, as long as the operand size is not large enough for cache
> eviction to become important.
>
> Would such a patch be offered, under what circumstance?
>
As this did not appear within 20 hours, I am sending again. My apology,
if it is waiting for moderator approval.
More information about the Fortran
mailing list