From 8c845af76efbaf4be8961f488007d10f74ff1b3d Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Sat, 3 Oct 2015 00:47:04 +0000 Subject: [PATCH] Fix a large bunch of warnings, and there are still mistakes that should be fixed before the SC release --- compute/pzlange.c | 4 +- compute/pzlanhe.c | 9 +- compute/pzlansy.c | 9 +- compute/pzlantr.c | 9 +- compute/pzpotrimm.c | 92 +++++++++---------- compute/zpotrimm.c | 4 +- compute/zsysv.c | 4 +- control/compute_z.h | 3 + coreblas/compute/core_zgesplit.c | 24 ++--- coreblas/include/coreblas_z.h | 6 ++ example/basic_zposv/zposv_users_functions.c | 2 +- example/lapack_to_morse/step0.c | 3 +- example/lapack_to_morse/step1.c | 1 - example/lapack_to_morse/step2.c | 1 - example/lapack_to_morse/step3.c | 1 - example/lapack_to_morse/step3.h | 4 +- example/lapack_to_morse/step4.c | 5 +- example/lapack_to_morse/step5.c | 5 +- example/lapack_to_morse/step6.c | 5 +- include/morse_z.h | 16 ++-- include/runtime_z.h | 9 +- runtime/starpu/codelets/codelet_zasum.c | 1 - runtime/starpu/codelets/codelet_zaxpy.c | 1 - runtime/starpu/codelets/codelet_zgemm.c | 2 + runtime/starpu/codelets/codelet_zgessm.c | 2 - .../starpu/codelets/codelet_zgetrf_incpiv.c | 40 ++++---- .../starpu/codelets/codelet_zsytrf_nopiv.c | 3 +- runtime/starpu/codelets/codelet_ztrsm.c | 1 + runtime/starpu/codelets/codelet_ztsmqr.c | 1 + runtime/starpu/codelets/codelet_zttmqr.c | 1 + runtime/starpu/codelets/codelet_zunmqr.c | 1 + runtime/starpu/control/runtime_descriptor.c | 10 +- runtime/starpu/control/runtime_zprofiling.c | 1 + 33 files changed, 147 insertions(+), 133 deletions(-) diff --git a/compute/pzlange.c b/compute/pzlange.c index 0b1186bf8..60207614a 100644 --- a/compute/pzlange.c +++ b/compute/pzlange.c @@ -50,13 +50,11 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result, MORSE_desc_t *RESULT = NULL; MORSE_context_t *morse; MORSE_option_t options; - size_t h_work_size, d_work_size; int workm, workn; int tempkm, tempkn; int ldam; - int m, n, k; - double alpha = 1.0; + int m, n; morse = morse_context_self(); if (sequence->status != MORSE_SUCCESS) diff --git a/compute/pzlanhe.c b/compute/pzlanhe.c index b4c3d2434..5227aca89 100644 --- a/compute/pzlanhe.c +++ b/compute/pzlanhe.c @@ -50,16 +50,15 @@ void morse_pzlanhe(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re MORSE_desc_t *RESULT = NULL; MORSE_context_t *morse; MORSE_option_t options; - size_t h_work_size, d_work_size; int workm, workn; int tempkm, tempkn; int ldam; - int m, n, k; - int part_p, part_q; + int m, n; + /* int part_p, part_q; */ - part_p = A->myrank / A->q; - part_q = A->myrank % A->q; + /* part_p = A->myrank / A->q; */ + /* part_q = A->myrank % A->q; */ morse = morse_context_self(); if (sequence->status != MORSE_SUCCESS) diff --git a/compute/pzlansy.c b/compute/pzlansy.c index cc192dc2b..3af873511 100644 --- a/compute/pzlansy.c +++ b/compute/pzlansy.c @@ -50,16 +50,15 @@ void morse_pzlansy(MORSE_enum norm, MORSE_enum uplo, MORSE_desc_t *A, double *re MORSE_desc_t *RESULT = NULL; MORSE_context_t *morse; MORSE_option_t options; - size_t h_work_size, d_work_size; int workm, workn; int tempkm, tempkn; int ldam; - int m, n, k; - int part_p, part_q; + int m, n; + /* int part_p, part_q; */ - part_p = A->myrank / A->q; - part_q = A->myrank % A->q; + /* part_p = A->myrank / A->q; */ + /* part_q = A->myrank % A->q; */ morse = morse_context_self(); if (sequence->status != MORSE_SUCCESS) diff --git a/compute/pzlantr.c b/compute/pzlantr.c index eef047e84..f330c896c 100644 --- a/compute/pzlantr.c +++ b/compute/pzlantr.c @@ -44,18 +44,17 @@ void morse_pzlantr(MORSE_enum norm, MORSE_enum uplo, MORSE_enum diag, MORSE_desc_t *RESULT = NULL; MORSE_context_t *morse; MORSE_option_t options; - size_t h_work_size, d_work_size; int workm, workn; int tempkm, tempkn; int ldam, ldan; - int m, n, k, minMNT; - int part_p, part_q; + int m, n, minMNT; + /* int part_p, part_q; */ minMNT = min( A->mt, A->nt ); - part_p = A->myrank / A->q; - part_q = A->myrank % A->q; + /* part_p = A->myrank / A->q; */ + /* part_q = A->myrank % A->q; */ morse = morse_context_self(); if (sequence->status != MORSE_SUCCESS) diff --git a/compute/pzpotrimm.c b/compute/pzpotrimm.c index ccc12c3c0..729f45a56 100644 --- a/compute/pzpotrimm.c +++ b/compute/pzpotrimm.c @@ -37,13 +37,13 @@ * Parallel tile Cholesky factorization - dynamic scheduling **/ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C, - MORSE_sequence_t *sequence, MORSE_request_t *request) + MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; MORSE_option_t options; int k, m, n; - int lda, ldab, ldb, ldc; + int lda, ldb, ldc; int ldak, ldam, ldan; int tempkm, tempmm, tempnn, tempkn; @@ -73,14 +73,14 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de /* * ZPOTRF */ - for (k = 0; k < A->mt; k++) { - tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; - ldak = BLKLDD(A, k); - MORSE_TASK_zpotrf( - &options, - MorseLower, tempkm, A->mb, + for (k = 0; k < A->mt; k++) { + tempkm = k == A->mt-1 ? A->m-k*A->mb : A->mb; + ldak = BLKLDD(A, k); + MORSE_TASK_zpotrf( + &options, + MorseLower, tempkm, A->mb, A(k, k), ldak, A->nb*k); - + for (m = k+1; m < A->mt; m++) { tempmm = m == A->mt-1 ? A->m-m*A->mb : A->mb; ldam = BLKLDD(A, m); @@ -93,30 +93,30 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de } MORSE_TASK_dataflush( &options, A(k, k) ); - for (n = k+1; n < A->nt; n++) { - tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb; - ldan = BLKLDD(A, n); - MORSE_TASK_zherk( - &options, - MorseLower, MorseNoTrans, - tempnn, A->nb, A->mb, - -1.0, A(n, k), ldan, - 1.0, A(n, n), ldan); - - for (m = n+1; m < A->mt; m++) { - tempmm = m == A->mt-1 ? A->m - m*A->mb : A->mb; - ldam = BLKLDD(A, m); - MORSE_TASK_zgemm( - &options, - MorseNoTrans, MorseConjTrans, - tempmm, tempnn, A->mb, A->mb, - mzone, A(m, k), ldam, - A(n, k), ldan, - zone, A(m, n), ldam); - } - MORSE_TASK_dataflush( &options, A(n, k) ); - } - } + for (n = k+1; n < A->nt; n++) { + tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb; + ldan = BLKLDD(A, n); + MORSE_TASK_zherk( + &options, + MorseLower, MorseNoTrans, + tempnn, A->nb, A->mb, + -1.0, A(n, k), ldan, + 1.0, A(n, n), ldan); + + for (m = n+1; m < A->mt; m++) { + tempmm = m == A->mt-1 ? A->m - m*A->mb : A->mb; + ldam = BLKLDD(A, m); + MORSE_TASK_zgemm( + &options, + MorseNoTrans, MorseConjTrans, + tempmm, tempnn, A->mb, A->mb, + mzone, A(m, k), ldam, + A(n, k), ldan, + zone, A(m, n), ldam); + } + MORSE_TASK_dataflush( &options, A(n, k) ); + } + } /* * ZTRTRI */ @@ -273,37 +273,37 @@ void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_de MorseLeft, MorseUpper, MorseConjTrans, MorseNonUnit, A->mb, tempnn, A->mb, zone, A(k, k), ldak, - A(k, n), ldak); + A(k, n), ldak); } MORSE_TASK_dataflush( &options, A(k, k) ); - for (m = k+1; m < A->mt; m++) { - tempmm = m == A->mt-1 ? A->m - m*A->mb : A->mb; - ldam = BLKLDD(A, m); + for (m = k+1; m < A->mt; m++) { + tempmm = m == A->mt-1 ? A->m - m*A->mb : A->mb; + ldam = BLKLDD(A, m); MORSE_TASK_zherk( &options, MorseUpper, MorseConjTrans, tempmm, A->mb, A->mb, -1.0, A(k, m), ldak, - 1.0, A(m, m), ldam); - + 1.0, A(m, m), ldam); + - for (n = m+1; n < A->nt; n++) { - tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb; + for (n = m+1; n < A->nt; n++) { + tempnn = n == A->nt-1 ? A->n-n*A->nb : A->nb; MORSE_TASK_zgemm( &options, MorseConjTrans, MorseNoTrans, tempmm, tempnn, A->mb, A->mb, mzone, A(k, m), ldak, - A(k, n), ldak, + A(k, n), ldak, zone, A(m, n), ldam); - } - MORSE_TASK_dataflush( &options, A(k, m) ); - } - } + } + MORSE_TASK_dataflush( &options, A(k, m) ); + } + } /* * ZTRTRI */ diff --git a/compute/zpotrimm.c b/compute/zpotrimm.c index 16c751915..2db5d5d0e 100644 --- a/compute/zpotrimm.c +++ b/compute/zpotrimm.c @@ -219,7 +219,7 @@ int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE MORSE_zpotrimm_Tile_Async(uplo, A, B, C, sequence, &request); RUNTIME_barrier(morse); RUNTIME_desc_getoncpu(C); - + status = sequence->status; morse_sequence_destroy(morse, sequence); return status; @@ -315,7 +315,7 @@ int MORSE_zpotrimm_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, return MORSE_SUCCESS; */ morse_pzpotrimm(uplo, A, B, C, sequence, request); - + /* morse_pztrtri(uplo, MorseNonUnit, A, sequence, request); diff --git a/compute/zsysv.c b/compute/zsysv.c index 07146496b..954e31bb2 100644 --- a/compute/zsysv.c +++ b/compute/zsysv.c @@ -171,7 +171,7 @@ int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS, /* morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS, sequence, &request);*/ /* RUNTIME_barrier(morse);*/ /* }*/ - + status = sequence->status; morse_sequence_destroy(morse, sequence); return status; @@ -238,7 +238,7 @@ int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B) RUNTIME_barrier(morse); RUNTIME_desc_getoncpu(A); RUNTIME_desc_getoncpu(B); - + status = sequence->status; morse_sequence_destroy(morse, sequence); return status; diff --git a/control/compute_z.h b/control/compute_z.h index 959264ebb..1128ea3c9 100644 --- a/control/compute_z.h +++ b/control/compute_z.h @@ -100,6 +100,7 @@ void morse_pzgerbh(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_sequence_t *sequence, void morse_pzgerbbrh(MORSE_desc_t *A, MORSE_desc_t *T, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetmi2(MORSE_enum idep, MORSE_enum odep, MORSE_enum storev, int m, int n, int mb, int nb, MORSE_Complex64_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_incpiv(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); +void morse_pzgetrf_nopiv(MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_reclap(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzgetrf_rectil(MORSE_desc_t *A, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzhbcpy_t2bl(MORSE_enum uplo, MORSE_desc_t *A, MORSE_Complex64_t *AB, int LDAB, MORSE_sequence_t *sequence, MORSE_request_t *request); @@ -127,10 +128,12 @@ void morse_pzplghe(double bump, MORSE_desc_t *A, unsigned long long int seed, MO void morse_pzplgsy(MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request ); void morse_pzplrnt(MORSE_desc_t *A, unsigned long long int seed, MORSE_sequence_t *sequence, MORSE_request_t *request ); void morse_pzpotrf(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); +void morse_pzpotrimm(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzshift(int, int, int, MORSE_Complex64_t *, int *, int, int, int, MORSE_sequence_t*, MORSE_request_t*); void morse_pzsymm(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzsyrk(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pzsyr2k(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); +void morse_pzsytrf(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pztrmm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pztrsm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request); void morse_pztrsmpl(MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *L, int *IPIV, MORSE_sequence_t *sequence, MORSE_request_t *request); diff --git a/coreblas/compute/core_zgesplit.c b/coreblas/compute/core_zgesplit.c index 943b5ca2e..aa0dbfe3d 100644 --- a/coreblas/compute/core_zgesplit.c +++ b/coreblas/compute/core_zgesplit.c @@ -29,16 +29,15 @@ #include "coreblas/include/lapacke.h" #include "coreblas/include/coreblas.h" -/***************************************************************************//** +/** + *************************************************************************** * * @ingroup CORE_MORSE_Complex64_t * - * CORE_zgesplit splits a matrix A into two parts (Upper/Lower), - * A keeps its lower/upper part unchanged and the other part is filled with zeros . - * ones can be optionally set on the diagonal. - * The part of A which is erased is copied in B. - * - * + * CORE_zgesplit splits a matrix A into two parts (Upper/Lower), A keeps its + * lower/upper part unchanged and the other part is filled with zeros. Ones + * can be optionally set on the diagonal. The part of A which is erased is + * copied in B. * ******************************************************************************* * @@ -73,9 +72,7 @@ int CORE_zgesplit(MORSE_enum side, MORSE_enum diag, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB) { - - MORSE_enum uplo; - int i, j; + MORSE_enum uplo; if (M < 0) { coreblas_error(1, "Illegal value of M"); @@ -95,9 +92,9 @@ int CORE_zgesplit(MORSE_enum side, MORSE_enum diag, } if (side == MorseLeft){ - uplo = MorseUpper; + uplo = MorseUpper; } else{ - uplo = MorseLower; + uplo = MorseLower; } LAPACKE_zlacpy_work(LAPACK_COL_MAJOR, @@ -110,6 +107,3 @@ int CORE_zgesplit(MORSE_enum side, MORSE_enum diag, return MORSE_SUCCESS; } - - - diff --git a/coreblas/include/coreblas_z.h b/coreblas/include/coreblas_z.h index 8b8c993a6..5193a3997 100644 --- a/coreblas/include/coreblas_z.h +++ b/coreblas/include/coreblas_z.h @@ -273,6 +273,9 @@ void CORE_zswpab(int i, int n1, int n2, MORSE_Complex64_t *A, MORSE_Complex64_t *work); int CORE_zswptr_ontile(MORSE_desc_t descA, int i1, int i2, const int *ipiv, int inc, const MORSE_Complex64_t *Akk, int ldak); +void CORE_ztrasm(MORSE_enum storev, MORSE_enum uplo, MORSE_enum diag, + int M, int N, + const MORSE_Complex64_t *A, int lda, double *work); void CORE_ztrdalg(MORSE_enum uplo, int N, int NB, const MORSE_desc_t *pA, MORSE_Complex64_t *V, MORSE_Complex64_t *TAU, int i, int j, int m, int grsiz); @@ -286,6 +289,9 @@ void CORE_ztrsm(MORSE_enum side, MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, const MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); +int CORE_ztrssq(MORSE_enum uplo, MORSE_enum diag, int M, int N, + const MORSE_Complex64_t *A, int LDA, + double *scale, double *sumsq); void CORE_ztrtri(MORSE_enum uplo, MORSE_enum diag, int N, MORSE_Complex64_t *A, int LDA, int *info); int CORE_ztslqt(int M, int N, int IB, diff --git a/example/basic_zposv/zposv_users_functions.c b/example/basic_zposv/zposv_users_functions.c index 7f1b596db..b8580db53 100644 --- a/example/basic_zposv/zposv_users_functions.c +++ b/example/basic_zposv/zposv_users_functions.c @@ -29,7 +29,7 @@ * Function that allocate an array of pointers to square tiles (allocated to 0) **/ MORSE_Complex64_t **allocate_tile_matrix(int m, int n, int nb){ - int i, j; + int i; int mt, nt; MORSE_Complex64_t **mat; diff --git a/example/lapack_to_morse/step0.c b/example/lapack_to_morse/step0.c index d3e86636b..f6e84e907 100644 --- a/example/lapack_to_morse/step0.c +++ b/example/lapack_to_morse/step0.c @@ -23,6 +23,7 @@ **/ #include "step0.h" +#include <coreblas/include/coreblas.h> /* * @brief step0 is a simple Cholesky example using the C interface of @@ -37,8 +38,6 @@ * The precision is: double */ int main(int argc, char *argv[]) { - - size_t i, j; size_t N; // matrix order size_t NRHS; // number of RHS vectors diff --git a/example/lapack_to_morse/step1.c b/example/lapack_to_morse/step1.c index 63933855e..24ff72645 100644 --- a/example/lapack_to_morse/step1.c +++ b/example/lapack_to_morse/step1.c @@ -45,7 +45,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order size_t NRHS; // number of RHS vectors int NCPU; // number of cores to use diff --git a/example/lapack_to_morse/step2.c b/example/lapack_to_morse/step2.c index d3cb31436..540c437f8 100644 --- a/example/lapack_to_morse/step2.c +++ b/example/lapack_to_morse/step2.c @@ -36,7 +36,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order int NB; // number of rows and columns in tiles int NRHS; // number of RHS vectors diff --git a/example/lapack_to_morse/step3.c b/example/lapack_to_morse/step3.c index 3a9f5ae7e..8f77be1a5 100644 --- a/example/lapack_to_morse/step3.c +++ b/example/lapack_to_morse/step3.c @@ -34,7 +34,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order int NB; // number of rows and columns in tiles int NRHS; // number of RHS vectors diff --git a/example/lapack_to_morse/step3.h b/example/lapack_to_morse/step3.h index aad26c212..eedce3468 100644 --- a/example/lapack_to_morse/step3.h +++ b/example/lapack_to_morse/step3.h @@ -129,7 +129,7 @@ static void print_header(char *prog_name, int * iparam) { * Function that allocate an array of pointers to square tiles (allocated to 0) */ double **allocate_tile_matrix(int m, int n, int nb){ - int i, j; + int i; int mt, nt; double **mat; @@ -155,7 +155,7 @@ double **allocate_tile_matrix(int m, int n, int nb){ * Function that deallocate an array of pointers to square tiles */ static void deallocate_tile_matrix(double **mat, int m, int n, int nb){ - int i, j; + int i; int mt, nt; /* compute number of tiles in rows and columns */ diff --git a/example/lapack_to_morse/step4.c b/example/lapack_to_morse/step4.c index 9a2ec2158..0e57339ed 100644 --- a/example/lapack_to_morse/step4.c +++ b/example/lapack_to_morse/step4.c @@ -38,7 +38,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order int NB; // number of rows and columns in tiles int NRHS; // number of RHS vectors @@ -152,6 +151,10 @@ int main(int argc, char *argv[]) { RUNTIME_desc_getoncpu(descX); status = sequence->status; + if ( status != 0 ) { + fprintf(stderr, "Error in computation (%d)\n", status); + return EXIT_FAILURE; + } MORSE_Sequence_Destroy(sequence); cpu_time += cWtime(); diff --git a/example/lapack_to_morse/step5.c b/example/lapack_to_morse/step5.c index 1267532e3..7017277ab 100644 --- a/example/lapack_to_morse/step5.c +++ b/example/lapack_to_morse/step5.c @@ -38,7 +38,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order int NB; // number of rows and columns in tiles int NRHS; // number of RHS vectors @@ -156,6 +155,10 @@ int main(int argc, char *argv[]) { RUNTIME_desc_getoncpu(descX); status = sequence->status; + if ( status != 0 ) { + fprintf(stderr, "Error in computation (%d)\n", status); + return EXIT_FAILURE; + } MORSE_Sequence_Destroy(sequence); cpu_time += cWtime(); diff --git a/example/lapack_to_morse/step6.c b/example/lapack_to_morse/step6.c index ee7cc0775..a9755768b 100644 --- a/example/lapack_to_morse/step6.c +++ b/example/lapack_to_morse/step6.c @@ -36,7 +36,6 @@ */ int main(int argc, char *argv[]) { - size_t i, j; size_t N; // matrix order int NB; // number of rows and columns in tiles int NRHS; // number of RHS vectors @@ -178,6 +177,10 @@ int main(int argc, char *argv[]) { RUNTIME_desc_getoncpu(descX); status = sequence->status; + if ( status != 0 ) { + fprintf(stderr, "Error in computation (%d)\n", status); + return EXIT_FAILURE; + } MORSE_Sequence_Destroy(sequence); cpu_time += cWtime(); diff --git a/include/morse_z.h b/include/morse_z.h index 6ac73d92c..51cb8cb0d 100644 --- a/include/morse_z.h +++ b/include/morse_z.h @@ -93,13 +93,13 @@ int MORSE_zposv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, int MORSE_zpotrf(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA); int MORSE_zsytrf(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA); int MORSE_zpotri(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA); +int MORSE_zpotrimm(MORSE_enum uplo, int N, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t *C, int LDC); int MORSE_zpotrs(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); -#if defined (PRECISION_c) || defined(PRECISION_z) -int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); -#endif int MORSE_zsymm(MORSE_enum side, MORSE_enum uplo, int M, int N, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC); int MORSE_zsyrk(MORSE_enum uplo, MORSE_enum trans, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC); int MORSE_zsyr2k(MORSE_enum uplo, MORSE_enum trans, int N, int K, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB, MORSE_Complex64_t beta, MORSE_Complex64_t *C, int LDC); +int MORSE_zsysv(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); +int MORSE_zsytrs(MORSE_enum uplo, int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); int MORSE_ztrmm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int N, int NRHS, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); int MORSE_ztrsm(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, int N, int NRHS, MORSE_Complex64_t alpha, MORSE_Complex64_t *A, int LDA, MORSE_Complex64_t *B, int LDB); int MORSE_ztrsmpl(int N, int NRHS, MORSE_Complex64_t *A, int LDA, MORSE_desc_t *descL, int *IPIV, MORSE_Complex64_t *B, int LDB); @@ -167,13 +167,13 @@ int MORSE_zposv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B); int MORSE_zpotrf_Tile(MORSE_enum uplo, MORSE_desc_t *A); int MORSE_zsytrf_Tile(MORSE_enum uplo, MORSE_desc_t *A); int MORSE_zpotri_Tile(MORSE_enum uplo, MORSE_desc_t *A); +int MORSE_zpotrimm_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C); int MORSE_zpotrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B); -#if defined (PRECISION_c) || defined(PRECISION_z) -int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B); -#endif int MORSE_zsymm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C); int MORSE_zsyrk_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *C); int MORSE_zsyr2k_Tile(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C); +int MORSE_zsysv_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B); +int MORSE_zsytrs_Tile(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B); int MORSE_ztrmm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B); int MORSE_ztrsm_Tile(MORSE_enum side, MORSE_enum uplo, MORSE_enum transA, MORSE_enum diag, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B); int MORSE_ztrsmpl_Tile(MORSE_desc_t *A, MORSE_desc_t *L, int *IPIV, MORSE_desc_t *B); @@ -238,10 +238,10 @@ int MORSE_zposv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MO int MORSE_zpotrf_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zsytrf_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zpotri_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request); +int MORSE_zpotrimm_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zpotrs_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request); -#if defined (PRECISION_c) || defined(PRECISION_z) +int MORSE_zsysv_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zsytrs_Tile_Async(MORSE_enum uplo, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_sequence_t *sequence, MORSE_request_t *request); -#endif int MORSE_zsymm_Tile_Async(MORSE_enum side, MORSE_enum uplo, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zsyrk_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); int MORSE_zsyr2k_Tile_Async(MORSE_enum uplo, MORSE_enum trans, MORSE_Complex64_t alpha, MORSE_desc_t *A, MORSE_desc_t *B, MORSE_Complex64_t beta, MORSE_desc_t *C, MORSE_sequence_t *sequence, MORSE_request_t *request); diff --git a/include/runtime_z.h b/include/runtime_z.h index e50b3e830..cb7d4c963 100644 --- a/include/runtime_z.h +++ b/include/runtime_z.h @@ -42,7 +42,7 @@ extern "C" { /** **************************************************************************** * Declarations of QUARK wrappers (called by MORSE) - alphabetical order **/ -void MORSE_TASK_zdasum(MORSE_option_t *options, +void MORSE_TASK_dzasum(MORSE_option_t *options, MORSE_enum storev, MORSE_enum uplo, int M, int N, MORSE_desc_t *A, int Am, int An, int lda, MORSE_desc_t *B, int Bm, int Bn); @@ -127,6 +127,9 @@ void MORSE_TASK_zgetrf_incpiv(MORSE_option_t *options, MORSE_desc_t *L, int Lm, int Ln, int ldl, int *IPIV, MORSE_bool check_info, int iinfo); +void MORSE_TASK_zgetrf_nopiv(MORSE_option_t *options, + int m, int n, int ib, int nb, + MORSE_desc_t *A, int Am, int An, int lda, int iinfo); void MORSE_TASK_zgetrf_reclap(MORSE_option_t *options, int m, int n, int nb, MORSE_desc_t *A, int Am, int An, int lda, @@ -288,6 +291,10 @@ void MORSE_TASK_zsyssq( MORSE_option_t *options, MORSE_enum uplo, int n, MORSE_desc_t *A, int Am, int An, int lda, MORSE_desc_t *SCALESUMSQ, int SCALESUMSQm, int SCALESUMSQn ); +void MORSE_TASK_zsytrf_nopiv(MORSE_option_t *options, + MORSE_enum uplo, int n, int nb, + MORSE_desc_t *A, int Am, int An, int lda, + int iinfo); void MORSE_TASK_zswpab(MORSE_option_t *options, int i, int n1, int n2, MORSE_desc_t *A, int Am, int An, int szeA); diff --git a/runtime/starpu/codelets/codelet_zasum.c b/runtime/starpu/codelets/codelet_zasum.c index 0d5cab3ae..a7098540c 100644 --- a/runtime/starpu/codelets/codelet_zasum.c +++ b/runtime/starpu/codelets/codelet_zasum.c @@ -59,7 +59,6 @@ static void cl_dzasum_cpu_func(void *descr[], void *cl_arg) MORSE_Complex64_t *A; int lda; double *work; - int m, n; A = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]); work = (double *)STARPU_MATRIX_GET_PTR(descr[1]); diff --git a/runtime/starpu/codelets/codelet_zaxpy.c b/runtime/starpu/codelets/codelet_zaxpy.c index 75251e5fe..5e889f7b7 100644 --- a/runtime/starpu/codelets/codelet_zaxpy.c +++ b/runtime/starpu/codelets/codelet_zaxpy.c @@ -58,7 +58,6 @@ static void cl_zaxpy_cpu_func(void *descr[], void *cl_arg) int incA; MORSE_Complex64_t *B; int incB; - int m, n; A = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]); B = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[1]); diff --git a/runtime/starpu/codelets/codelet_zgemm.c b/runtime/starpu/codelets/codelet_zgemm.c index 6a86fc137..224c5f589 100644 --- a/runtime/starpu/codelets/codelet_zgemm.c +++ b/runtime/starpu/codelets/codelet_zgemm.c @@ -52,10 +52,12 @@ void MORSE_TASK_zgemm(MORSE_option_t *options, int sizeC = ldc*n; int execution_rank = C->get_rankof( C, Cm, Cn ); int rank_changed=0; + (void)execution_rank; // force execution on the rank owning the largest data (tile) int threshold; char* env = getenv("MORSE_COMM_FACTOR_THRESHOLD"); + if (env != NULL) threshold = (unsigned)atoi(env); else diff --git a/runtime/starpu/codelets/codelet_zgessm.c b/runtime/starpu/codelets/codelet_zgessm.c index 7a74296e5..7ee3078f1 100644 --- a/runtime/starpu/codelets/codelet_zgessm.c +++ b/runtime/starpu/codelets/codelet_zgessm.c @@ -121,14 +121,12 @@ static void cl_zgessm_cpu_func(void *descr[], void *cl_arg) int k; int ib; int *IPIV; - MORSE_Complex64_t *L; int ldl; MORSE_Complex64_t *D; int ldd; MORSE_Complex64_t *A; int lda; - L = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]); D = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[1]); A = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[2]); starpu_codelet_unpack_args(cl_arg, &m, &n, &k, &ib, &IPIV, &ldl, &ldd, &lda); diff --git a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c index acd0ee798..f3782ef37 100644 --- a/runtime/starpu/codelets/codelet_zgetrf_incpiv.c +++ b/runtime/starpu/codelets/codelet_zgetrf_incpiv.c @@ -130,7 +130,7 @@ static void cl_zgetrf_incpiv_cpu_func(void *descr[], void *cl_arg) int m; int n; int ib; - MORSE_Complex64_t *A, *L; + MORSE_Complex64_t *A; int lda, ldl; int *IPIV; MORSE_bool check_info; @@ -139,30 +139,32 @@ static void cl_zgetrf_incpiv_cpu_func(void *descr[], void *cl_arg) int info = 0; A = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]); - L = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[1]); starpu_codelet_unpack_args(cl_arg, &m, &n, &ib, &lda, &ldl, &IPIV, &check_info, &iinfo, &h_work); CORE_zgetrf_incpiv(m, n, ib, A, lda, IPIV, &info); #if defined(CHAMELEON_USE_MAGMA) - /* - * L stores: - * L1 L2 L3 ... - * L1^-1 L2^-1 L3^-1 ... - */ - /* Compute L-1 in lower rectangle of L */ - if ( ldl >= 2*ib ) { - int i, sb; - - L += ib; - for (i=0; i<n; i+=ib) { - sb = min( ib, n-i ); - CORE_zlacpy(MorseUpperLower, sb, sb, A+(i*lda+i), lda, L+(i*ldl), ldl ); - - CORE_ztrtri( MorseLower, MorseUnit, sb, L+(i*ldl), ldl, &info ); - if (info != 0 ) { - fprintf(stderr, "ERROR, trtri returned with info = %d\n", info); + MORSE_Complex64_t *L = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[1]); + /* + * L stores: + * L1 L2 L3 ... + * L1^-1 L2^-1 L3^-1 ... + */ + /* Compute L-1 in lower rectangle of L */ + if ( ldl >= 2*ib ) + { + int i, sb; + + L += ib; + for (i=0; i<n; i+=ib) { + sb = min( ib, n-i ); + CORE_zlacpy(MorseUpperLower, sb, sb, A+(i*lda+i), lda, L+(i*ldl), ldl ); + + CORE_ztrtri( MorseLower, MorseUnit, sb, L+(i*ldl), ldl, &info ); + if (info != 0 ) { + fprintf(stderr, "ERROR, trtri returned with info = %d\n", info); + } } } } diff --git a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c index df6bf32a3..bdb0ddbac 100644 --- a/runtime/starpu/codelets/codelet_zsytrf_nopiv.c +++ b/runtime/starpu/codelets/codelet_zsytrf_nopiv.c @@ -65,12 +65,11 @@ static void cl_zsytrf_nopiv_cpu_func(void *descr[], void *cl_arg) MORSE_Complex64_t *A; int lda; int iinfo; - int info = 0; A = (MORSE_Complex64_t *)STARPU_MATRIX_GET_PTR(descr[0]); starpu_codelet_unpack_args(cl_arg, &uplo, &n, &lda, &iinfo); - info = CORE_zsytf2_nopiv(uplo, n, A, lda); + CORE_zsytf2_nopiv(uplo, n, A, lda); } /* diff --git a/runtime/starpu/codelets/codelet_ztrsm.c b/runtime/starpu/codelets/codelet_ztrsm.c index 846746a32..6fb6fffee 100644 --- a/runtime/starpu/codelets/codelet_ztrsm.c +++ b/runtime/starpu/codelets/codelet_ztrsm.c @@ -50,6 +50,7 @@ void MORSE_TASK_ztrsm(MORSE_option_t *options, int sizeB = ldb*n; int execution_rank = B->get_rankof( B, Bm, Bn ); int rank_changed=0; + (void)execution_rank; // force execution on the rank owning the largest data (tile) int threshold; diff --git a/runtime/starpu/codelets/codelet_ztsmqr.c b/runtime/starpu/codelets/codelet_ztsmqr.c index 56dee7ab5..374a400ea 100644 --- a/runtime/starpu/codelets/codelet_ztsmqr.c +++ b/runtime/starpu/codelets/codelet_ztsmqr.c @@ -150,6 +150,7 @@ void MORSE_TASK_ztsmqr(MORSE_option_t *options, int sizeT = ldt*n1; int execution_rank = A2->get_rankof( A2, A2m, A2n ); int rank_changed=0; + (void)execution_rank; // force execution on the rank owning the largest data (tile) int threshold; diff --git a/runtime/starpu/codelets/codelet_zttmqr.c b/runtime/starpu/codelets/codelet_zttmqr.c index 0f4c1690c..b3615e9d6 100644 --- a/runtime/starpu/codelets/codelet_zttmqr.c +++ b/runtime/starpu/codelets/codelet_zttmqr.c @@ -143,6 +143,7 @@ void MORSE_TASK_zttmqr(MORSE_option_t *options, int sizeT = ldt*n1; int execution_rank = A2->get_rankof( A2, A2m, A2n ); int rank_changed=0; + (void)execution_rank; // force execution on the rank owning the largest data (tile) int threshold; diff --git a/runtime/starpu/codelets/codelet_zunmqr.c b/runtime/starpu/codelets/codelet_zunmqr.c index 0074e5c38..b5e23cfbd 100644 --- a/runtime/starpu/codelets/codelet_zunmqr.c +++ b/runtime/starpu/codelets/codelet_zunmqr.c @@ -131,6 +131,7 @@ void MORSE_TASK_zunmqr(MORSE_option_t *options, int sizeC = ldc*n; int execution_rank = C->get_rankof( C, Cm, Cn ); int rank_changed=0; + (void)execution_rank; // force execution on the rank owning the largest data (tile) int threshold; diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c index 026e028f3..277026484 100644 --- a/runtime/starpu/control/runtime_descriptor.c +++ b/runtime/starpu/control/runtime_descriptor.c @@ -47,8 +47,8 @@ void RUNTIME_desc_create( MORSE_desc_t *desc ) { int64_t lmt = desc->lmt; int64_t lnt = desc->lnt; - int64_t block_ind = 0; starpu_data_handle_t *tiles; + (void)tiles; desc->occurences = 1; @@ -262,7 +262,6 @@ void *RUNTIME_desc_getaddr( MORSE_desc_t *desc, int m, int n ) ptrtile += ((int64_t)(desc->lmt) * (int64_t)n + (int64_t)m); if (*ptrtile == NULL) { - int64_t block_ind = desc->lmt * n + m; int64_t eltsze = MORSE_Element_Size(desc->dtyp); int myrank = desc->myrank; int owner = desc->get_rankof( desc, m, n ); @@ -270,20 +269,21 @@ void *RUNTIME_desc_getaddr( MORSE_desc_t *desc, int m, int n ) int tempnn = (n == desc->lnt-1) ? (desc->ln - n * desc->nb) : desc->nb; if ( myrank == owner ) { - //printf("\nRegister %d %d %d", MORSE_My_Mpi_Rank(), m, n); starpu_matrix_data_register(ptrtile, 0, (uintptr_t)desc->get_blkaddr(desc, m, n), BLKLDD(desc, m), tempmm, tempnn, eltsze); } else { - //printf("\nRegister dist %d %d %d", MORSE_My_Mpi_Rank(), m, n); starpu_matrix_data_register(ptrtile, -1, (uintptr_t) NULL, BLKLDD(desc, m), tempmm, tempnn, eltsze); } #if defined(CHAMELEON_USE_MPI) - starpu_mpi_data_register(*ptrtile, (desc->id << tag_sep) | (block_ind), owner); + { + int64_t block_ind = desc->lmt * n + m; + starpu_mpi_data_register(*ptrtile, (desc->id << tag_sep) | (block_ind), owner); + } #endif /* defined(CHAMELEON_USE_MPI) */ } diff --git a/runtime/starpu/control/runtime_zprofiling.c b/runtime/starpu/control/runtime_zprofiling.c index 98476046c..c2fc5f5e6 100644 --- a/runtime/starpu/control/runtime_zprofiling.c +++ b/runtime/starpu/control/runtime_zprofiling.c @@ -26,6 +26,7 @@ * **/ #include "runtime/starpu/include/morse_starpu.h" +#include "runtime/starpu/include/runtime_codelet_z.h" void RUNTIME_zdisplay_allprofile() { -- GitLab