Skip to content

Commit 4ed99c2

Browse files
authored
Merge pull request #3292 from martin-frbg/syrk_limit
Add lower limit for multithreading in xSYRK
2 parents f20c4ed + 8186963 commit 4ed99c2

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

benchmark/syrk.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,20 @@ int main(int argc, char *argv[]){
5656

5757
char uplo='U';
5858
char trans='N';
59-
59+
6060
if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
6161
if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
6262

63-
blasint m, i, j;
63+
blasint m, i, j, l;
6464

6565
int from = 1;
6666
int to = 200;
6767
int step = 1;
68+
int loops = 1;
69+
70+
if ((p = getenv("OPENBLAS_LOOPS"))) loops=*p;
6871

69-
double time1;
72+
double time1,timeg;
7073

7174
argc--;argv++;
7275

@@ -95,9 +98,12 @@ int main(int argc, char *argv[]){
9598

9699
for(m = from; m <= to; m += step)
97100
{
101+
timeg = 0.;
98102

99103
fprintf(stderr, " %6d : ", (int)m);
100104

105+
for(l = 0; l < loops; l++) {
106+
101107
for(j = 0; j < m; j++){
102108
for(i = 0; i < m * COMPSIZE; i++){
103109
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[]){
111117

112118
end();
113119

114-
time1 = getsec();
115-
120+
timeg += getsec();
121+
122+
} //loops
123+
time1 = timeg / (double)loops;
116124
fprintf(stderr,
117125
" %10.2f MFlops\n",
118126
COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6);

interface/syrk.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,17 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr
354354
#endif
355355

356356
args.common = NULL;
357+
#ifndef COMPLEX
358+
#ifdef DOUBLE
359+
if (args.n < 100)
360+
#else
361+
if (args.n < 200)
362+
#endif
363+
#else
364+
if (args.n < 65)
365+
#endif
366+
args.nthreads = 1;
367+
else
357368
args.nthreads = num_cpu_avail(3);
358369

359370
if (args.nthreads == 1) {

0 commit comments

Comments
 (0)