From 38763ec4f3939769cd73c71a470de4f689f348a1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 3 Dec 2017 22:40:54 +0100 Subject: [PATCH 1/2] Disable multithreading for trmv as a (hopefully temporary) workaround for #1332 --- interface/trmv.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/trmv.c b/interface/trmv.c index 2e52527a3c..7d17dc67b1 100644 --- a/interface/trmv.c +++ b/interface/trmv.c @@ -220,6 +220,9 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, #ifdef SMP nthreads = num_cpu_avail(2); +/*FIXME trmv_thread was found to be broken, see issue 1332 */ + nthreads = 1; + if (nthreads == 1) { #endif From b414283f48f50fe195601fa83650d0531eebe9b3 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sun, 3 Dec 2017 22:41:54 +0100 Subject: [PATCH 2/2] Disable gemv unrolling as a (hopefully temporary) workaround for #1332 --- driver/level2/trmv_U.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/driver/level2/trmv_U.c b/driver/level2/trmv_U.c index a0aa7ef0e2..7f8895e7f1 100644 --- a/driver/level2/trmv_U.c +++ b/driver/level2/trmv_U.c @@ -54,12 +54,16 @@ int CNAME(BLASLONG m, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, FLOAT *bu COPY_K(m, b, incb, buffer, 1); } - for (is = 0; is < m; is += DTB_ENTRIES){ +/*FIXME the GEMV unrolling performed here was found to be broken, see issue 1332 */ +/* Multiplying DTB size by 100 is just a quick-and-dirty hack to disable it for now[B */ - min_i = MIN(m - is, DTB_ENTRIES); + for (is = 0; is < m; is += DTB_ENTRIES * 100){ + + min_i = MIN(m - is, DTB_ENTRIES * 100); #ifndef TRANSA if (is > 0){ +fprintf(stderr,"WARNING unrolling of the trmv_U loop may give wrong results\n"); GEMV_N(is, min_i, 0, dp1, a + is * lda, lda, B + is, 1,