[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;
      }
   }
}