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