[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
no luck with cleanup
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;
}
}
}