[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FW: newbie Athlon optimization question...



Jeff,

>Reading over the documentation online, it seems like what I need to do is
>basically just write some faster kernel implementation and stick it in
>ATLAS/tune/blas/gemm/CASES, as well as create one of those description
>files.  It also mentioned that the main bulk of time was taken up by the
>matrix-matrix multiply algorithm.  I'm trying to base a faster Athlon
>implementation off of some existing ATLAS code.  Of the files listed
>below, which one actually is the matrix-matrix multiply source for the
>kernel?  BTW this was taekn from my tracing of HPL as mentioned in the
>earlier email:

After you've finished the install, the main kernel is in
   ATLAS/src/blas/gemm/Linux_ATHLON/KERNEL/ATL_dNBmm_b1.c

To use this bad boy as a contributed kernel as described in atlas_contrib.ps,
don't forget to change the name of the routine, and make it be able to
handle multiple BETAs, as described in atlas_contrib.

I've tried to improve it by hand myself, with no particular luck.  The x87
ISA with it's 8 register stack leaves little room for elegance or
intelligence.  With only 8 registers, register blocking is pretty much
impotent, meaning you are hitting the L1 all the time.  This traffic seems
to pretty much rule out improvements from adding prefetch, as far as I can
tell.

>Lastly, is there an easy way to find out if ATLAS really did use
>my source file/function?  Or do I have to trace the execution of a program
>to find out which function was called?  Thanks for your help.

After you follow the instructions on page 22 to get it to use your kernel,
scoping ATLAS/tune/blas/gemm/<arch>/res/dMMRES will tell you what it used.

Cheers,
Clint