Skip to content

Commit f2d6b1c

Browse files
authored
Add multithreading threshold
1 parent a495ffc commit f2d6b1c

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

interface/symm.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#endif
4545

4646
#ifndef COMPLEX
47+
#define SMP_THRESHOLD_MIN 65536.
4748
#ifdef XDOUBLE
4849
#define ERROR_NAME "QSYMM "
4950
#elif defined(DOUBLE)
@@ -52,6 +53,7 @@
5253
#define ERROR_NAME "SSYMM "
5354
#endif
5455
#else
56+
#define SMP_THRESHOLD_MIN 8192.
5557
#ifndef GEMM3M
5658
#ifndef HEMM
5759
#ifdef XDOUBLE
@@ -91,6 +93,10 @@
9193
#endif
9294
#endif
9395

96+
#ifndef GEMM_MULTITHREAD_THRESHOLD
97+
#define GEMM_MULTITHREAD_THRESHOLD 4
98+
#endif
99+
94100

95101
#ifdef SMP
96102
#ifndef COMPLEX
@@ -159,7 +165,9 @@ void NAME(char *SIDE, char *UPLO,
159165
#if defined(SMP) && !defined(NO_AFFINITY)
160166
int nodes;
161167
#endif
162-
168+
# if defined(SMP)
169+
int MN;
170+
#endif
163171
blasint info;
164172
int side;
165173
int uplo;
@@ -255,6 +263,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo,
255263
#if defined(SMP) && !defined(NO_AFFINITY)
256264
int nodes;
257265
#endif
266+
#if defined(SMP)
267+
int MN;
268+
#endif
258269

259270
PRINT_DEBUG_CNAME;
260271

@@ -375,15 +386,18 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo,
375386

376387
#ifdef SMP
377388
args.common = NULL;
378-
args.nthreads = num_cpu_avail(3);
379-
389+
MN = 2.* (double) args.m * (double)args.m * (double) args.n;
390+
if (MN <= (SMP_THRESHOLD_MIN * (double) GEMM_MULTITHREAD_THRESHOLD) ) {
391+
args.nthreads = 1;
392+
} else {
393+
args.nthreads = num_cpu_avail(3);
394+
}
380395
if (args.nthreads == 1) {
381396
#endif
382397

383398
(symm[(side << 1) | uplo ])(&args, NULL, NULL, sa, sb, 0);
384399

385400
#ifdef SMP
386-
387401
} else {
388402

389403
#ifndef NO_AFFINITY

0 commit comments

Comments
 (0)