diff --git a/interface/swap.c b/interface/swap.c index 7676246f9..271fa083a 100644 --- a/interface/swap.c +++ b/interface/swap.c @@ -78,7 +78,12 @@ void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ #ifdef SMP nthreads = num_cpu_avail(1); - + + //disable multi-thread when incx==0 or incy==0 + //In that case, the threads would be dependent. + if (incx == 0 || incy == 0) + nthreads = 1; + if (nthreads == 1) { #endif diff --git a/interface/zswap.c b/interface/zswap.c index f4a03a550..06a889204 100644 --- a/interface/zswap.c +++ b/interface/zswap.c @@ -80,6 +80,11 @@ void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ #ifdef SMP nthreads = num_cpu_avail(1); + //disable multi-thread when incx==0 or incy==0 + //In that case, the threads would be dependent. + if (incx == 0 || incy == 0) + nthreads = 1; + if (nthreads == 1) { #endif