From 78da0e0a0cf773dcb7d918a60e069a85986f47da Mon Sep 17 00:00:00 2001 From: Xianyi Zhang Date: Sun, 20 Feb 2011 17:14:38 +0800 Subject: [PATCH] Fixed #6. Disable multi-thread swap when incx==0 or incy==0. --- interface/swap.c | 7 ++++++- interface/zswap.c | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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