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