|
|
@@ -44,6 +44,7 @@ |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef COMPLEX |
|
|
|
#define SMP_THRESHOLD_MIN 109944. |
|
|
|
#ifdef XDOUBLE |
|
|
|
#define ERROR_NAME "QSYRK " |
|
|
|
#elif defined(DOUBLE) |
|
|
@@ -52,6 +53,7 @@ |
|
|
|
#define ERROR_NAME "SSYRK " |
|
|
|
#endif |
|
|
|
#else |
|
|
|
#define SMP_THRESHOLD_MIN 14824. |
|
|
|
#ifndef HEMM |
|
|
|
#ifdef XDOUBLE |
|
|
|
#define ERROR_NAME "XSYRK " |
|
|
@@ -71,6 +73,10 @@ |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef GEMM_MULTITHREAD_THRESHOLD |
|
|
|
#define GEMM_MULTITHREAD_THRESHOLD 4 |
|
|
|
#endif |
|
|
|
|
|
|
|
static int (*syrk[])(blas_arg_t *, BLASLONG *, BLASLONG *, FLOAT *, FLOAT *, BLASLONG) = { |
|
|
|
#ifndef HEMM |
|
|
|
SYRK_UN, SYRK_UC, SYRK_LN, SYRK_LC, |
|
|
@@ -101,6 +107,7 @@ void NAME(char *UPLO, char *TRANS, |
|
|
|
FLOAT *sa, *sb; |
|
|
|
|
|
|
|
#ifdef SMP |
|
|
|
int NNK; |
|
|
|
#ifdef USE_SIMPLE_THREADED_LEVEL3 |
|
|
|
#ifndef COMPLEX |
|
|
|
#ifdef XDOUBLE |
|
|
@@ -225,6 +232,8 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr |
|
|
|
FLOAT *sa, *sb; |
|
|
|
|
|
|
|
#ifdef SMP |
|
|
|
int NNK; |
|
|
|
|
|
|
|
#ifdef USE_SIMPLE_THREADED_LEVEL3 |
|
|
|
#ifndef COMPLEX |
|
|
|
#ifdef XDOUBLE |
|
|
@@ -354,18 +363,13 @@ 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 |
|
|
|
|
|
|
|
NNK = (double)(args.n+1)*(double)args.n*(double)args.k; |
|
|
|
if (NNK <= (SMP_THRESHOLD_MIN * GEMM_MULTITHREAD_THRESHOLD)) { |
|
|
|
args.nthreads = 1; |
|
|
|
else |
|
|
|
} else { |
|
|
|
args.nthreads = num_cpu_avail(3); |
|
|
|
} |
|
|
|
|
|
|
|
if (args.nthreads == 1) { |
|
|
|
#endif |
|
|
@@ -373,7 +377,6 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr |
|
|
|
(syrk[(uplo << 1) | trans ])(&args, NULL, NULL, sa, sb, 0); |
|
|
|
|
|
|
|
#ifdef SMP |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
#ifndef USE_SIMPLE_THREADED_LEVEL3 |
|
|
|