From cd6051f2aa65cb4857ca047e5f35f3935da25dfd Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Wed, 5 Apr 2017 15:55:33 +0200
Subject: [PATCH 1/2] Update morse_cmake

---
 cmake_modules/morse_cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmake_modules/morse_cmake b/cmake_modules/morse_cmake
index 32c1ba6ae..0a974775b 160000
--- a/cmake_modules/morse_cmake
+++ b/cmake_modules/morse_cmake
@@ -1 +1 @@
-Subproject commit 32c1ba6ae5d7e19d570ac3bd86a24acb82f2081e
+Subproject commit 0a974775b7192227b887dcba77515305083c1f13
-- 
GitLab


From 50682a83c5d6285241dd82d6293054aec56486f2 Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Wed, 5 Apr 2017 15:56:03 +0200
Subject: [PATCH 2/2] Protect the calls to lapacke in compute, this is a
 temporary fix for issue 18

---
 compute/zgesvd.c |  5 +++++
 compute/zheevd.c | 10 ++++++++--
 compute/zhetrd.c |  2 ++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/compute/zgesvd.c b/compute/zgesvd.c
index 571b9fa90..f61ddd9b9 100644
--- a/compute/zgesvd.c
+++ b/compute/zgesvd.c
@@ -521,6 +521,8 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
     }
 
     morse_sequence_wait(morse, sequence);
+
+#if !defined(CHAMELEON_SIMULATION)
     info = LAPACKE_zgbbrd( LAPACK_COL_MAJOR,
                            gbbrd_vect,
                            M, N,
@@ -533,6 +535,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
     if (info != 0) {
         fprintf(stderr, "MORSE_zgesvd_Tile_Async: LAPACKE_zgbbrd = %d\n", info );
     }
+#endif /* !defined(CHAMELEON_SIMULATION) */
     morse_desc_mat_free(&descAB);
 
     /* Transform U and Vt into tile format */
@@ -594,6 +597,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
 
     /* Solve the bidiagonal SVD problem */
     /* On exit, U and VT are updated with bidiagonal matrix singular vectors */
+#if !defined(CHAMELEON_SIMULATION)
     info = LAPACKE_zbdsqr( LAPACK_COL_MAJOR, 'U',
                            MINMN, ncvt, nru, 0,
                            S, E,
@@ -601,6 +605,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt,
     if (info != 0) {
         fprintf(stderr, "MORSE_zgesvd_Tile_Async: LAPACKE_zbdsqr = %d\n", info );
     }
+#endif /* !defined(CHAMELEON_SIMULATION) */
 
     if (jobu != MorseNoVec)
         morse_desc_mat_free( &descU );
diff --git a/compute/zheevd.c b/compute/zheevd.c
index a873de743..664fb2ab3 100644
--- a/compute/zheevd.c
+++ b/compute/zheevd.c
@@ -420,6 +420,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
 
 
     if (jobz == MorseNoVec){
+#if !defined(CHAMELEON_SIMULATION)
         /* Tridiagonal eigensolver */
         status = LAPACKE_zstedc( LAPACK_COL_MAJOR,
                                  morse_lapack_const(jobz),
@@ -428,6 +429,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
         if (status != 0) {
             morse_error("MORSE_zheevd_Tile_Async", "LAPACKE_zstedc failed");
         }
+#endif /* !defined(CHAMELEON_SIMULATION) */
         free(E);
         return MORSE_SUCCESS;
     }
@@ -441,8 +443,11 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
     /* For bug in lapacke */
     memset(V, 0, N * N * sizeof(MORSE_Complex64_t));
 
-    /* Tridiagonal eigensolver */
-    /* V contains the eigenvectors of the tridiagonal system on exit */
+    /*
+     * Tridiagonal eigensolver
+     * V contains the eigenvectors of the tridiagonal system on exit
+     */
+#if !defined(CHAMELEON_SIMULATION)
     status = LAPACKE_zstedc( LAPACK_COL_MAJOR,
                              morse_lapack_const(MorseIvec),
                              N, W, E,
@@ -450,6 +455,7 @@ int MORSE_zheevd_Tile_Async(MORSE_enum jobz, MORSE_enum uplo,
     if (status != 0) {
         morse_error("MORSE_zheevd_Tile_Async", "LAPACKE_zstedc failed");
     }
+#endif /* !defined(CHAMELEON_SIMULATION) */
 
     /* Convert matrices in tile format */
     /* A/T from MORSE_zhetrd   refer  to Q1 (tile   layout) */
diff --git a/compute/zhetrd.c b/compute/zhetrd.c
index 40c8dde89..b74a90afc 100644
--- a/compute/zhetrd.c
+++ b/compute/zhetrd.c
@@ -408,6 +408,7 @@ int MORSE_zhetrd_Tile_Async(MORSE_enum jobz,
     morse_sequence_wait(morse, sequence);
 
     /* Reduce band matrix to tridiagonal matrix */
+#if !defined(CHAMELEON_SIMULATION)
     status = LAPACKE_zhbtrd( LAPACK_COL_MAJOR,
                              morse_lapack_const(jobz),
                              morse_lapack_const(uplo),
@@ -417,6 +418,7 @@ int MORSE_zhetrd_Tile_Async(MORSE_enum jobz,
     if (status != 0) {
         morse_error("MORSE_zhetrd_Tile_Async", "LAPACKE_zhbtrd failed");
     }
+#endif /* !defined(CHAMELEON_SIMULATION) */
 
     morse_desc_mat_free(&descAB);
     return MORSE_SUCCESS;
-- 
GitLab