From a4543e4918f9c732d4701315d5b22de31a79f737 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 4 Jul 2021 16:59:43 +0200 Subject: [PATCH 1/2] Handle OPENBLAS_LOOP --- benchmark/syrk.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/benchmark/syrk.c b/benchmark/syrk.c index 82606a21a..fa0f24666 100644 --- a/benchmark/syrk.c +++ b/benchmark/syrk.c @@ -56,17 +56,20 @@ int main(int argc, char *argv[]){ char uplo='U'; char trans='N'; - + if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p; if ((p = getenv("OPENBLAS_TRANS"))) trans=*p; - blasint m, i, j; + blasint m, i, j, l; int from = 1; int to = 200; int step = 1; + int loops = 1; - double time1; + if ((p = getenv("OPENBLAS_LOOPS"))) loops=*p; + + double time1,timeg; argc--;argv++; @@ -95,9 +98,12 @@ int main(int argc, char *argv[]){ for(m = from; m <= to; m += step) { + timeg = 0.; fprintf(stderr, " %6d : ", (int)m); + for(l = 0; l < loops; l++) { + for(j = 0; j < m; j++){ for(i = 0; i < m * COMPSIZE; i++){ a[(long)i + (long)j * (long)m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; @@ -111,8 +117,10 @@ int main(int argc, char *argv[]){ end(); - time1 = getsec(); - + timeg += getsec(); + + } //loops + time1 = timeg / (double)loops; fprintf(stderr, " %10.2f MFlops\n", COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6); From 8186963d8c454ba65325053eebe0a4328421755f Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 4 Jul 2021 17:00:26 +0200 Subject: [PATCH 2/2] Add lower limit for multithreading --- interface/syrk.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/interface/syrk.c b/interface/syrk.c index 7699db683..edb113d6c 100644 --- a/interface/syrk.c +++ b/interface/syrk.c @@ -354,6 +354,17 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr #endif args.common = NULL; +#ifndef COMPLEX +#ifdef DOUBLE + if (args.n < 100) +#else + if (args.n < 200) +#endif +#else + if (args.n < 65) +#endif + args.nthreads = 1; + else args.nthreads = num_cpu_avail(3); if (args.nthreads == 1) {