From be3c843700376efb5a8be2526fa7e34042e68646 Mon Sep 17 00:00:00 2001 From: Werner Saar Date: Wed, 6 May 2015 09:21:19 +0200 Subject: [PATCH 1/2] added loops to trsm.c --- benchmark/trsm.c | 49 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/benchmark/trsm.c b/benchmark/trsm.c index ed969b707..9eae3380c 100644 --- a/benchmark/trsm.c +++ b/benchmark/trsm.c @@ -130,11 +130,21 @@ int main(int argc, char *argv[]){ char trans='N'; char diag ='U'; + + int l; + int loops = 1; + double timeg; + if ((p = getenv("OPENBLAS_SIDE"))) side=*p; if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p; if ((p = getenv("OPENBLAS_TRANS"))) trans=*p; if ((p = getenv("OPENBLAS_DIAG"))) diag=*p; + p = getenv("OPENBLAS_LOOPS"); + if ( p != NULL ) + loops = atoi(p); + + blasint m, i, j; int from = 1; @@ -150,7 +160,7 @@ int main(int argc, char *argv[]){ if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++;} if (argc > 0) { step = atol(*argv); argc--; argv++;} - fprintf(stderr, "From : %3d To : %3d Step = %3d Side = %c Uplo = %c Trans = %c Diag = %c\n", from, to, step,side,uplo,trans,diag); + fprintf(stderr, "From : %3d To : %3d Step = %3d Side = %c Uplo = %c Trans = %c Diag = %c Loops = %d\n", from, to, step,side,uplo,trans,diag,loops); if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){ fprintf(stderr,"Out of Memory!!\n");exit(1); @@ -171,28 +181,35 @@ int main(int argc, char *argv[]){ for(m = from; m <= to; m += step) { - fprintf(stderr, " %6d : ", (int)m); + timeg=0.0; - for(j = 0; j < m; j++){ - for(i = 0; i < m * COMPSIZE; i++){ - a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - } - } + fprintf(stderr, " %6d : ", (int)m); - gettimeofday( &start, (struct timezone *)0); + for (l=0; l Date: Wed, 6 May 2015 10:41:53 +0200 Subject: [PATCH 2/2] use only 1 thread if m or n < 2*GEMM_MULTITHREAD_THRESHOLD --- interface/trsm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/interface/trsm.c b/interface/trsm.c index 266372988..3d4aed282 100644 --- a/interface/trsm.c +++ b/interface/trsm.c @@ -362,6 +362,12 @@ void CNAME(enum CBLAS_ORDER order, mode |= (side << BLAS_RSIDE_SHIFT); args.nthreads = num_cpu_avail(3); + if ( args.m < 2*GEMM_MULTITHREAD_THRESHOLD ) + args.nthreads = 1; + else + if ( args.n < 2*GEMM_MULTITHREAD_THRESHOLD ) + args.nthreads = 1; + if (args.nthreads == 1) { #endif