[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: no luck with cleanup
My apologies, Clint! I'd mentioned that I hadn't checked the variable
m and n bit (I was unaware of the variables you could pass to 'make
mmutstcase'), and I should have known better than to guess that I'd get
it right the first time!
These should work:
http://people.debian.org/~camm/sgemm_20001116.tgz
Take care,
R Clint Whaley <rwhaley@cs.utk.edu> writes:
> Camm,
>
> I'm having no luck using the code you sent for cleanup. Can you see if
> it passes for you? The command is :
> >make mmutstcase pre=s M=16 N=56 K=56 mb=0 nb=56 kb=56 mmrout=../CASES/ATL_sgemm_SSE_1x1xkb.c
>
> This indicates run a 16x56x56 sgemm, with mb being an run-time variable.
> Here's the same thing, but with mb being compile time:
>
> >make mmutstcase pre=s M=16 N=56 K=56 mb=16 nb=56 kb=56 mmrout=../CASES/ATL_sgemm_SSE_1x1xkb.c
>
> Anyway, I can't get any cleanup (M, N, K) to work with either of these
> routines, either as compile-time or runtime variables . . .
>
> I include a simple kernel that takes any unrolling and all run-time args, so
> you can verify that your tester works for these cleanup cases . . .
>
> Thanks,
> Clint
>
> #include "atlas_misc.h"
> void ATL_USERMM
> (const int M, const int N, const int K, const TYPE alpha, const TYPE *A, const int lda, const TYPE *B, const int ldb, const TYPE beta, TYPE *C, const int ldc)
> {
> int i, j, k;
> register TYPE c00;
>
> for (j=0; j < N; j++)
> {
> for (i=0; i < M; i++)
> {
> #ifdef BETA0
> c00 = 0.0;
> #elif defined(BETA1)
> c00 = C[i+j*ldc];
> #else
> c00 = C[i+j*ldc] * beta;
> #endif
> for (k=0; k < K; k++) c00 += A[k+i*lda] * B[k+j*ldb];
> C[i+j*ldc] = c00;
> }
> }
> }
>
>
--
Camm Maguire camm@enhanced.com
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah