Skip to content

Commit 1fe3aab

Browse files
committed
Use GEMM_MULTITHREAD_THRESHOLD as a number of ops
...not a matrix size. For GEMM_MULTITHREAD_THRESHOLD=4 (the default value) this does not change anything but for other values it make the GEMM and GEMV thresholds changing in the same way. Close #742
1 parent 1a19355 commit 1fe3aab

File tree

2 files changed

+6
-33
lines changed

2 files changed

+6
-33
lines changed

interface/gemv.c

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,6 @@ void NAME(char *TRANS, blasint *M, blasint *N,
8282
int buffer_size;
8383
#ifdef SMP
8484
int nthreads;
85-
int nthreads_max;
86-
int nthreads_avail;
87-
double MNK;
8885
#endif
8986

9087
int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT * , BLASLONG, FLOAT *, BLASLONG, FLOAT *) = {
@@ -139,9 +136,6 @@ void CNAME(enum CBLAS_ORDER order,
139136
blasint info, t;
140137
#ifdef SMP
141138
int nthreads;
142-
int nthreads_max;
143-
int nthreads_avail;
144-
double MNK;
145139
#endif
146140

147141
int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT *, BLASLONG, FLOAT * , BLASLONG, FLOAT *, BLASLONG, FLOAT *) = {
@@ -226,17 +220,10 @@ void CNAME(enum CBLAS_ORDER order,
226220

227221
#ifdef SMP
228222

229-
nthreads_max = num_cpu_avail(2);
230-
nthreads_avail = nthreads_max;
231-
232-
MNK = (double) m * (double) n;
233-
if ( MNK <= (24.0 * 24.0 * (double) (GEMM_MULTITHREAD_THRESHOLD*GEMM_MULTITHREAD_THRESHOLD) ) )
234-
nthreads_max = 1;
235-
236-
if ( nthreads_max > nthreads_avail )
237-
nthreads = nthreads_avail;
223+
if ( 1L * m * n < 2304L * GEMM_MULTITHREAD_THRESHOLD )
224+
nthreads = 1;
238225
else
239-
nthreads = nthreads_max;
226+
nthreads = num_cpu_avail(2);
240227

241228
if (nthreads == 1) {
242229
#endif

interface/zgemv.c

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,6 @@ void NAME(char *TRANS, blasint *M, blasint *N,
7979
FLOAT *buffer;
8080
#ifdef SMP
8181
int nthreads;
82-
int nthreads_max;
83-
int nthreads_avail;
84-
double MNK;
8582
#endif
8683

8784
int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT, FLOAT *, BLASLONG,
@@ -148,9 +145,6 @@ void CNAME(enum CBLAS_ORDER order,
148145
blasint info, t;
149146
#ifdef SMP
150147
int nthreads;
151-
int nthreads_max;
152-
int nthreads_avail;
153-
double MNK;
154148
#endif
155149

156150
int (*gemv[])(BLASLONG, BLASLONG, BLASLONG, FLOAT, FLOAT, FLOAT *, BLASLONG,
@@ -240,18 +234,10 @@ void CNAME(enum CBLAS_ORDER order,
240234

241235
#ifdef SMP
242236

243-
nthreads_max = num_cpu_avail(2);
244-
nthreads_avail = nthreads_max;
245-
246-
MNK = (double) m * (double) n;
247-
if ( MNK <= ( 256.0 * (double) (GEMM_MULTITHREAD_THRESHOLD * GEMM_MULTITHREAD_THRESHOLD) ))
248-
nthreads_max = 1;
249-
250-
if ( nthreads_max > nthreads_avail )
251-
nthreads = nthreads_avail;
237+
if ( 1L * m * n < 1024L * GEMM_MULTITHREAD_THRESHOLD )
238+
nthreads = 1;
252239
else
253-
nthreads = nthreads_max;
254-
240+
nthreads = num_cpu_avail(2);
255241

256242
if (nthreads == 1) {
257243
#endif

0 commit comments

Comments
 (0)