From da5894a2ed5ced13cbac1cf9209a9e3c5a9fc6e6 Mon Sep 17 00:00:00 2001 From: Andrew <16061801+brada4@users.noreply.github.com> Date: Fri, 23 Nov 2018 16:08:15 +0100 Subject: [PATCH] Limit _AXPY threading due to observed regression with excess threads --- interface/axpy.c | 8 ++++++++ interface/zaxpy.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/interface/axpy.c b/interface/axpy.c index 39edea6af..ca3640fa6 100644 --- a/interface/axpy.c +++ b/interface/axpy.c @@ -46,6 +46,10 @@ #else #define MULTI_THREAD_MINIMAL 10000 #endif +#if defined(ARCH_X86) || defined(ARCH_X86_64) +#define MULTI_THREAD_MAX_NUM 2 +#endif + #ifndef CBLAS void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ @@ -91,7 +95,11 @@ void CNAME(blasint n, FLOAT alpha, FLOAT *x, blasint incx, FLOAT *y, blasint inc if (incx == 0 || incy == 0 || n <= MULTI_THREAD_MINIMAL) nthreads = 1; else +#ifdef MULTI_THREAD_MAX_NUM + nthreads = MIN(MULTI_THREAD_MAX_NUM,num_cpu_avail(1)); +#else nthreads = num_cpu_avail(1); +#endif if (nthreads == 1) { #endif diff --git a/interface/zaxpy.c b/interface/zaxpy.c index 1a0259c96..9b5823aaf 100644 --- a/interface/zaxpy.c +++ b/interface/zaxpy.c @@ -46,6 +46,9 @@ #else #define MULTI_THREAD_MINIMAL 10000 #endif +#if defined(ARCH_X86) || defined(ARCH_X86_64) +#define MULTI_THREAD_MAX_NUM 2 +#endif #ifndef CBLAS void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ @@ -98,7 +101,11 @@ void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *y, blasint in if (incx == 0 || incy == 0 || n <= MULTI_THREAD_MINIMAL) nthreads = 1; else +#ifdef MULTI_THREAD_MAX_NUM + nthreads = MIN(MULTI_THREAD_MAX_NUM,num_cpu_avail(1)); +#else nthreads = num_cpu_avail(1); +#endif if (nthreads == 1) { #endif