[Math-atlas-commits] CVS: AtlasBase/Clint atlas.base,1.17,1.18
Brought to you by:
rwhaley,
tonyc040457
From: Peter S. <so...@us...> - 2002-05-24 15:14:24
|
Update of /cvsroot/math-atlas/AtlasBase/Clint In directory usw-pr-cvs1:/tmp/cvs-serv21726 Modified Files: atlas.base Log Message: added cache flushing to mmtst Index: atlas.base =================================================================== RCS file: /cvsroot/math-atlas/AtlasBase/Clint/atlas.base,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** atlas.base 9 Mar 2002 01:56:46 -0000 1.17 --- atlas.base 24 May 2002 15:14:21 -0000 1.18 *************** *** 18311,18317 **** #endif ! int mmcase(int TEST, char TA, char TB, int M, int N, int K, SCALAR alpha, ! TYPE *A, int lda, TYPE *B, int ldb, SCALAR beta, TYPE *C, int ldc, ! TYPE *D, int ldd) { char *pc; --- 18311,18317 ---- #endif ! int mmcase(int TEST, int CACHESIZE, char TA, char TB, int M, int N, int K, ! SCALAR alpha, TYPE *A, int lda, TYPE *B, int ldb, SCALAR beta, ! TYPE *C, int ldc, TYPE *D, int ldd) { char *pc; *************** *** 18330,18338 **** static TYPE feps=0.0; static int itst=1; ! int *L2, nL2=(1.3*L2SIZE)/sizeof(int); enum ATLAS_TRANS TAc, TBc; if (!TEST) D = C; ! if (nL2) L2 = malloc(nL2*sizeof(int)); if (TA == 'n' || TA == 'N') { --- 18330,18340 ---- static TYPE feps=0.0; static int itst=1; ! /*int *L2, nL2=(1.3*L2SIZE)/sizeof(int);*/ enum ATLAS_TRANS TAc, TBc; + double l2ret; if (!TEST) D = C; ! /*if (nL2) L2 = malloc(nL2*sizeof(int));*/ ! l2ret = ATL_flushcache( CACHESIZE ); if (TA == 'n' || TA == 'N') { *************** *** 18365,18373 **** #endif ! if (L2) /* invalidate L2 cache */ ! { ! for (i=0; i != nL2; i++) L2[i] = 0.0; ! for (i=0; i != nL2; i++) j += L2[i]; ! } t0 = time00(); --- 18367,18379 ---- #endif ! /* ! if (L2) ! { ! for (i=0; i != nL2; i++) L2[i] = 0.0; ! for (i=0; i != nL2; i++) j += L2[i]; ! }*/ ! ! /* invalidate L2 cache */ ! l2ret = ATL_flushcache( -1 ); t0 = time00(); *************** *** 18390,18398 **** matgen(M, N, D, ldd, M*N); ! if (L2) ! { ! for (i=0; i != nL2; i++) L2[i] = 0.0; /* invalidate L2 cache */ ! for (i=0; i != nL2; i++) j += L2[i]; /* invalidate L2 cache */ ! } t0 = time00(); --- 18396,18401 ---- matgen(M, N, D, ldd, M*N); ! /* invalidate L2 cache */ ! l2ret = ATL_flushcache( -1 ); t0 = time00(); *************** *** 18476,18485 **** PASSED = 1; #endif ! free(L2); return(PASSED); } ! int mmcase0(int MFLOP, char TA, char TB, int M, int N, int K, SCALAR alpha, ! int lda, int ldb, SCALAR beta, int ldc) { char *pc; --- 18479,18489 ---- PASSED = 1; #endif ! /*free(L2);*/ ! l2ret = ATL_flushcache( 0 ); return(PASSED); } ! int mmcase0(int MFLOP, int CACHESIZE, char TA, char TB, int M, int N, int K, ! SCALAR alpha, int lda, int ldb, SCALAR beta, int ldc) { char *pc; *************** *** 18558,18562 **** inc = incA + incB + incC; i = M*K + K*N + M*N; /* amount of inc actually referenced */ ! nmat = ((L2SIZE/ATL_sizeof) + i)/i; vp = malloc(ATL_MulBySize(nmat*inc)+ATL_Cachelen); ATL_assert(vp); --- 18562,18567 ---- inc = incA + incB + incC; i = M*K + K*N + M*N; /* amount of inc actually referenced */ ! /* This is a hack; change to use of flushcache instead. */ ! nmat = ((CACHESIZE/ATL_sizeof) + i)/i; vp = malloc(ATL_MulBySize(nmat*inc)+ATL_Cachelen); ATL_assert(vp); *************** *** 18626,18630 **** void PrintUsage(char *nam) { ! fprintf(stderr, "USAGE: %s -Side <nsides> L/R -Uplo <nuplo> L/U -Atrans <ntrans> n/t/c -Btrans <ntrans> n/t/c -Diag <ndiags> N/U -M <m1> <mN> <minc> -N <n1> <nN> <ninc> <k1> <kN> <kinc> -n <n> -m <m> -k <k> -a <nalphas> <alpha1> ... <alphaN> -b <nbetas> <beta1> ... <betaN> -Test <0/1> -F <mflops>\n", nam); exit(-1); } --- 18631,18635 ---- void PrintUsage(char *nam) { ! fprintf(stderr, "USAGE: %s -Side <nsides> L/R -Uplo <nuplo> L/U -Atrans <ntrans> n/t/c -Btrans <ntrans> n/t/c -Diag <ndiags> N/U -M <m1> <mN> <minc> -N <n1> <nN> <ninc> <k1> <kN> <kinc> -n <n> -m <m> -k <k> -a <nalphas> <alpha1> ... <alphaN> -b <nbetas> <beta1> ... <betaN> -Test <0/1> -F <mflops> -C <cachesize>\n", nam); exit(-1); } *************** *** 18637,18641 **** int *N0, int *NN, int *Ninc, int *K0, int *KN, int *Kinc, int *nalphas, TYPE **alphas, int *nbetas, TYPE **betas, ! int *LDA_IS_M, int *MFLOP) { --- 18642,18646 ---- int *N0, int *NN, int *Ninc, int *K0, int *KN, int *Kinc, int *nalphas, TYPE **alphas, int *nbetas, TYPE **betas, ! int *LDA_IS_M, int *MFLOP, int *CACHESIZE) { *************** *** 18649,18652 **** --- 18654,18662 ---- *nuplo = *nta = *ntb = *nside = *ndiag = *nalphas = *nbetas = -1; *MFLOP = *LDA_IS_M = 0; + #ifdef L2SIZE + *CACHESIZE = L2SIZE; /* Size of largest cache to flush */ + #else + *CACHESIZE = 4*1024*1024; + #endif for (i=1; i < nargs; i++) *************** *** 18657,18660 **** --- 18667,18674 ---- *MFLOP = atoi(args[++i]); break; + case 'C': + if( args[i+1] == NULL ) PrintUsage( args[0] ); + *CACHESIZE = 1024*atoi(args[++i]); + break; case 'S': *nside = atoi(args[++i]); *************** *** 18861,18869 **** enum ATLAS_TRANS *TransA, *TransB, TAc, TBc; enum ATLAS_DIAG *Diag; GetFlags(nargs, args, &TEST, &nside, &Side, &nuplo, &Uplo, &nTA, &TransA, &nTB, &TransB, &ndiag, &Diag, &M0, &MN, &incM, &N0, &NN, &incN, &K0, &KN, &incK, ! &nalph, &alph, &nbeta, &beta, &LDA_IS_M, &MFLOP); if (M0 == -1) --- 18875,18884 ---- enum ATLAS_TRANS *TransA, *TransB, TAc, TBc; enum ATLAS_DIAG *Diag; + int CACHESIZE; GetFlags(nargs, args, &TEST, &nside, &Side, &nuplo, &Uplo, &nTA, &TransA, &nTB, &TransB, &ndiag, &Diag, &M0, &MN, &incM, &N0, &NN, &incN, &K0, &KN, &incK, ! &nalph, &alph, &nbeta, &beta, &LDA_IS_M, &MFLOP,&CACHESIZE); if (M0 == -1) *************** *** 18896,18903 **** if (MFLOP) { ! mmcase0(10, 'n', 'n', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 'n', 't', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 't', 'n', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 't', 't', 100, 100, 100, alp1, 100, 100, bet1, 100); } else --- 18911,18918 ---- if (MFLOP) { ! mmcase0(10, 1, 'n', 'n', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 1, 'n', 't', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 1, 't', 'n', 100, 100, 100, alp1, 100, 100, bet1, 100); ! mmcase0(10, 1, 't', 't', 100, 100, 100, alp1, 100, 100, bet1, 100); } else *************** *** 18968,18990 **** { ipass++; ! #ifdef TREAL ! mmcase0(MFLOP, TA, TB, m, n, k, alph[ia], ! lda, ldb, beta[ib], ldc); ! #else ! mmcase0(MFLOP, TA, TB, m, n, k, alph+(ia SHIFT), ! lda, ldb, beta+(ib SHIFT), ldc); ! #endif } else { ! #ifdef TREAL ! ipass += mmcase(TEST, TA, TB, m, n, k, ! alph[ia], A, lda, B, ldb, beta[ib], C, ldc, D,ldc); ! #else ! ipass += mmcase(TEST, TA, TB, m, n, k, ! alph+(ia SHIFT), A, lda, B, ldb, ! beta+(ib SHIFT), C, ldc, D,ldc); ! #endif } } --- 18983,19007 ---- { ipass++; ! #ifdef TREAL ! mmcase0(MFLOP, CACHESIZE, TA, TB, m, n, k, ! alph[ia], lda, ldb, beta[ib], ldc); ! #else ! mmcase0(MFLOP, CACHESIZE, TA, TB, m, n, k, ! alph+(ia SHIFT), lda, ldb, ! beta+(ib SHIFT), ldc); ! #endif } else { ! #ifdef TREAL ! ipass += mmcase(TEST, CACHESIZE, TA, TB, m, ! n, k, alph[ia], A, lda, B, ldb, beta[ib], C, ldc, D,ldc); ! #else ! ipass += mmcase(TEST, CACHESIZE, TA, TB, m, ! n, k, alph+(ia SHIFT), A, ! lda, B, ldb, beta+(ib SHIFT), ! C, ldc, D,ldc); ! #endif } } *************** *** 19015,19019 **** exit(0); } ! @ROUT l3blastst @extract -b @(topd)/gen.inc what=cw -def author "Jeff Horner" -def contrib "Antoine Petitet, R. Clint Whaley" -def cdate 1998 #include <stdio.h> --- 19032,19036 ---- exit(0); } ! @ROUT l3blastst_old @extract -b @(topd)/gen.inc what=cw -def author "Jeff Horner" -def contrib "Antoine Petitet, R. Clint Whaley" -def cdate 1998 #include <stdio.h> |