From 08e6fdc4439782b39787f1161fb1cab9a0d72e5c Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Fri, 25 Nov 2016 07:52:26 +0000 Subject: [PATCH] fix use of cuda+magma in simulation mode: size of workspace must be consistent between real and simu modes --- CMakeLists.txt | 9 ++++++--- compute/pzgelqf.c | 4 ++-- compute/pzgelqfrh.c | 4 ++-- compute/pzgeqrf.c | 4 ++-- compute/pzgeqrfrh.c | 4 ++-- compute/pzgetrf_incpiv.c | 2 +- compute/pzunglq.c | 4 ++-- compute/pzunglqrh.c | 4 ++-- compute/pzungqr.c | 4 ++-- compute/pzungqrrh.c | 4 ++-- compute/pzunmlq.c | 10 +++++----- compute/pzunmlqrh.c | 10 +++++----- compute/pzunmqr.c | 10 +++++----- compute/pzunmqrrh.c | 10 +++++----- 14 files changed, 43 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8645a1b65..c8fa0f87d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -237,9 +237,12 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") message("-- ${BoldGreen}CHAMELEON_SIMULATION is set to OFF, turn it ON to use" " SIMULATION mode (only with StarPU compiled with SimGrid)${ColourReset}") endif() - option(CHAMELEON_SIMULATION_MAGMA "Enable magma kernels in simulation mode" OFF) - if (NOT CHAMELEON_SIMULATION_MAGMA) - message("-- ${BoldGreen}CHAMELEON_SIMULATION_MAGMA is set to OFF, turn it ON to enable MAGMA kernels in " + option(CHAMELEON_SIMULATION_MAGMA "Enable cuda/magma kernels in simulation mode" OFF) + if (CHAMELEON_SIMULATION_MAGMA) + message("-- ${BoldGreen}CHAMELEON_SIMULATION_MAGMA is set to ON, turn it OFF to disable CUDA/MAGMA kernels in " + " SIMULATION mode${ColourReset}") + else() + message("-- ${BoldGreen}CHAMELEON_SIMULATION_MAGMA is set to OFF, turn it ON to enable CUDA/MAGMA kernels in " " SIMULATION mode${ColourReset}") endif() endif() diff --git a/compute/pzgelqf.c b/compute/pzgelqf.c index 1e2a17ccf..636a6ee52 100644 --- a/compute/pzgelqf.c +++ b/compute/pzgelqf.c @@ -71,7 +71,7 @@ void morse_pzgelqf(MORSE_desc_t *A, MORSE_desc_t *T, ws_worker = A->nb * (ib+1); /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zgelqt = max( A->nb * (ib+1), ib * (ib + A->nb) ) @@ -117,7 +117,7 @@ void morse_pzgelqf(MORSE_desc_t *A, MORSE_desc_t *T, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, A->mb, A->nb, diff --git a/compute/pzgelqfrh.c b/compute/pzgelqfrh.c index 08e1cc9fc..7205791c4 100644 --- a/compute/pzgelqfrh.c +++ b/compute/pzgelqfrh.c @@ -79,7 +79,7 @@ void morse_pzgelqfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, ws_worker = A->nb * (ib+1); /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zgelqt = max( A->nb * (ib+1), ib * (ib + A->nb) ) @@ -128,7 +128,7 @@ void morse_pzgelqfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, A(k, N), ldak, DIAG(k, N), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkm, tempNn, diff --git a/compute/pzgeqrf.c b/compute/pzgeqrf.c index 98e5d3679..4edf41b73 100644 --- a/compute/pzgeqrf.c +++ b/compute/pzgeqrf.c @@ -72,7 +72,7 @@ void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, ws_worker = A->nb * (ib+1); /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zgeqrt = max( A->nb * (ib+1), ib * (ib + A->nb) ) @@ -118,7 +118,7 @@ void morse_pzgeqrf(MORSE_desc_t *A, MORSE_desc_t *T, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, A->mb, A->nb, diff --git a/compute/pzgeqrfrh.c b/compute/pzgeqrfrh.c index 35f433b65..c2af99bca 100644 --- a/compute/pzgeqrfrh.c +++ b/compute/pzgeqrfrh.c @@ -77,7 +77,7 @@ void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, ws_worker = A->nb * (ib+1); /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zgeqrt = max( A->nb * (ib+1), ib * (ib + A->nb) ) @@ -127,7 +127,7 @@ void morse_pzgeqrfrh(MORSE_desc_t *A, MORSE_desc_t *T, int BS, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, A->nb, diff --git a/compute/pzgetrf_incpiv.c b/compute/pzgetrf_incpiv.c index 323338a42..c78faa11b 100644 --- a/compute/pzgetrf_incpiv.c +++ b/compute/pzgetrf_incpiv.c @@ -64,7 +64,7 @@ void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, RUNTIME_options_init(&options, morse, sequence, request); ib = MORSE_IB; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) h_work_size = sizeof(MORSE_Complex64_t)*( 2*ib + 2*L->nb )*2*A->mb; d_work_size = sizeof(MORSE_Complex64_t)*( ib )*2*A->mb; #else diff --git a/compute/pzunglq.c b/compute/pzunglq.c index d59c3ff8b..4244a2480 100644 --- a/compute/pzunglq.c +++ b/compute/pzunglq.c @@ -77,7 +77,7 @@ void morse_pzunglq(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, ws_worker = A->nb * ib; /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmlq = A->nb * ib @@ -123,7 +123,7 @@ void morse_pzunglq(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, A(k, k), ldak, DIAG(k), A->mb ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempkn, diff --git a/compute/pzunglqrh.c b/compute/pzunglqrh.c index b175fbf32..d236cea6c 100644 --- a/compute/pzunglqrh.c +++ b/compute/pzunglqrh.c @@ -75,7 +75,7 @@ void morse_pzunglqrh(MORSE_desc_t *A, MORSE_desc_t *Q, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmqr = A->nb * ib @@ -146,7 +146,7 @@ void morse_pzunglqrh(MORSE_desc_t *A, MORSE_desc_t *Q, A(k, N), ldak, DIAG(k, N), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempNn, diff --git a/compute/pzungqr.c b/compute/pzungqr.c index 34155b7e9..b3f462818 100644 --- a/compute/pzungqr.c +++ b/compute/pzungqr.c @@ -71,7 +71,7 @@ void morse_pzungqr(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, ws_worker = A->nb * ib; /* Allocation of temporary (scratch) working space */ -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmqr = A->nb * ib @@ -119,7 +119,7 @@ void morse_pzungqr(MORSE_desc_t *A, MORSE_desc_t *Q, MORSE_desc_t *T, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempkm, tempkmin, diff --git a/compute/pzungqrrh.c b/compute/pzungqrrh.c index 0869550c0..39609da69 100644 --- a/compute/pzungqrrh.c +++ b/compute/pzungqrrh.c @@ -77,7 +77,7 @@ void morse_pzungqrrh(MORSE_desc_t *A, MORSE_desc_t *Q, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmqr = A->nb * ib @@ -152,7 +152,7 @@ void morse_pzungqrrh(MORSE_desc_t *A, MORSE_desc_t *Q, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, tempkmin, diff --git a/compute/pzunmlq.c b/compute/pzunmlq.c index ff2d32ac6..8757c1e85 100644 --- a/compute/pzunmlq.c +++ b/compute/pzunmlq.c @@ -79,7 +79,7 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmlq = A->nb * ib @@ -114,7 +114,7 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), A->mb ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempkm, @@ -179,7 +179,7 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), A->mb ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempkm, @@ -230,7 +230,7 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), A->mb ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempkn, @@ -265,7 +265,7 @@ void morse_pzunmlq(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), A->mb ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempkn, diff --git a/compute/pzunmlqrh.c b/compute/pzunmlqrh.c index bdab950a4..99c31285b 100644 --- a/compute/pzunmlqrh.c +++ b/compute/pzunmlqrh.c @@ -77,7 +77,7 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmlq = A->nb * ib @@ -117,7 +117,7 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, A(k, N), ldak, DIAG(k, N), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempNn, @@ -229,7 +229,7 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, A(k, N), ldak, DIAG(k, N), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempNn, @@ -306,7 +306,7 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, A(k, N), ldak, DIAG(k, N), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempNn, @@ -345,7 +345,7 @@ void morse_pzunmlqrh(MORSE_enum side, MORSE_enum trans, A(k, N), ldaN, DIAG(k, N), ldaN ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseLower, tempkmin, tempNn, diff --git a/compute/pzunmqr.c b/compute/pzunmqr.c index 2c1631875..690b785f4 100644 --- a/compute/pzunmqr.c +++ b/compute/pzunmqr.c @@ -71,7 +71,7 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmqr = A->nb * ib @@ -114,7 +114,7 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempkm, tempkmin, @@ -181,7 +181,7 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempkm, tempkmin, @@ -234,7 +234,7 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempkn, tempkmin, @@ -269,7 +269,7 @@ void morse_pzunmqr(MORSE_enum side, MORSE_enum trans, A(k, k), ldak, DIAG(k), ldak ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempkn, tempkmin, diff --git a/compute/pzunmqrrh.c b/compute/pzunmqrrh.c index 7f3d33d36..3050eae20 100644 --- a/compute/pzunmqrrh.c +++ b/compute/pzunmqrrh.c @@ -77,7 +77,7 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, */ ws_worker = A->nb * ib; -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) /* Worker space * * zunmqr = A->nb * ib @@ -116,7 +116,7 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, tempkmin, @@ -231,7 +231,7 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, tempkmin, @@ -310,7 +310,7 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, tempkmin, @@ -348,7 +348,7 @@ void morse_pzunmqrrh(MORSE_enum side, MORSE_enum trans, A(M, k), ldaM, DIAG(M, k), ldaM ); #endif -#if defined(CHAMELEON_USE_MAGMA) +#if defined(CHAMELEON_USE_MAGMA) || defined(CHAMELEON_SIMULATION_MAGMA) MORSE_TASK_zlaset( &options, MorseUpper, tempMm, tempkmin, -- GitLab