[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:
R Clint Whaley <email@example.com> writes:
> 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 . . .
> #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];
> c00 = C[i+j*ldc] * beta;
> for (k=0; k < K; k++) c00 += A[k+i*lda] * B[k+j*ldb];
> C[i+j*ldc] = c00;
Camm Maguire firstname.lastname@example.org
"The earth is but one country, and mankind its citizens." -- Baha'u'llah