From 05705d3810142f7e509830a3301a66a29feb0ba7 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 14 Jun 2017 16:38:49 +0200 Subject: [PATCH] Fix D matrix sizes --- compute/zgelqf_param.c | 17 ++++-- compute/zgelqs_param.c | 16 +++-- compute/zgels_param.c | 130 ++++++++++++++++++++--------------------- compute/zgeqrf_param.c | 18 ++++-- compute/zgeqrs_param.c | 19 ++++-- compute/zunglq_param.c | 21 ++++--- compute/zungqr_param.c | 23 +++++--- compute/zunmlq_param.c | 18 ++++-- compute/zunmqr_param.c | 18 ++++-- 9 files changed, 161 insertions(+), 119 deletions(-) diff --git a/compute/zgelqf_param.c b/compute/zgelqf_param.c index 5d07b6eed..2e4668681 100644 --- a/compute/zgelqf_param.c +++ b/compute/zgelqf_param.c @@ -238,7 +238,7 @@ int MORSE_zgelqf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -283,12 +283,17 @@ int MORSE_zgelqf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, return MORSE_SUCCESS; */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzgelqf_param(qrtree, A, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzgelqf_param(qrtree, A, TS, TT, NULL, sequence, request); + { + int m = chameleon_min(A->mt, A->nt) * A->mb; + morse_zdesc_alloc(D, A->mb, A->nb, m, A->n, 0, 0, m, A->n, ); + Dptr = &D; + } #endif + + morse_pzgelqf_param(qrtree, A, TS, TT, Dptr, sequence, request); + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zgelqs_param.c b/compute/zgelqs_param.c index 8d792993f..ef1cc2505 100644 --- a/compute/zgelqs_param.c +++ b/compute/zgelqs_param.c @@ -271,7 +271,7 @@ int MORSE_zgelqs_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *subB; MORSE_desc_t *subA; MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -331,13 +331,17 @@ int MORSE_zgelqs_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, free(subB); #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, NULL, sequence, request); + { + int m = chameleon_min(A->mt, A->nt) * A->mb; + morse_zdesc_alloc(D, A->mb, A->nb, m, A->n, 0, 0, m, A->n, ); + Dptr = &D; + } #endif + morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, Dptr, sequence, request); + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zgels_param.c b/compute/zgels_param.c index 751dc533f..fac618e1e 100644 --- a/compute/zgels_param.c +++ b/compute/zgels_param.c @@ -173,45 +173,45 @@ int MORSE_zgels_param(const libhqr_tree_t *qrtree, MORSE_enum trans, int M, int morse_sequence_create(morse, &sequence); if ( M >= N ) { -/* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ - morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request, - morse_desc_mat_free(&(descA)) ); - morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request, - morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB))); -/* } else {*/ -/* morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/ -/* sequence, &request);*/ -/* morse_ziplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS,*/ -/* sequence, &request);*/ -/* }*/ + /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ + morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request, + morse_desc_mat_free(&(descA)) ); + morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS, sequence, &request, + morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB))); + /* } else {*/ + /* morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/ + /* sequence, &request);*/ + /* morse_ziplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, M, NRHS,*/ + /* sequence, &request);*/ + /* }*/ } else { -/* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ - morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request, - morse_desc_mat_free(&(descA)) ); - morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request, - morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB))); -/* } else {*/ -/* morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/ -/* sequence, &request);*/ -/* morse_ziplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS,*/ -/* sequence, &request);*/ -/* }*/ + /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ + morse_zooplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N, sequence, &request, + morse_desc_mat_free(&(descA)) ); + morse_zooplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS, sequence, &request, + morse_desc_mat_free(&(descA)); morse_desc_mat_free(&(descB))); + /* } else {*/ + /* morse_ziplap2tile( descA, A, NB, NB, LDA, N, 0, 0, M, N,*/ + /* sequence, &request);*/ + /* morse_ziplap2tile( descB, B, NB, NB, LDB, NRHS, 0, 0, N, NRHS,*/ + /* sequence, &request);*/ + /* }*/ } /* Call the tile interface */ MORSE_zgels_param_Tile_Async(qrtree, MorseNoTrans, &descA, descTS, descTT, &descB, sequence, &request); -/* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ - morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request); - morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS, sequence, &request); - morse_sequence_wait(morse, sequence); - morse_desc_mat_free(&descA); - morse_desc_mat_free(&descB); -/* } else {*/ -/* morse_ziptile2lap( descA, A, NB, NB, LDA, N, sequence, &request);*/ -/* morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS, sequence, &request);*/ -/* morse_sequence_wait(morse, sequence);*/ -/* }*/ + /* if ( MORSE_TRANSLATION == MORSE_OUTOFPLACE ) {*/ + morse_zooptile2lap(descA, A, NB, NB, LDA, N, sequence, &request); + morse_zooptile2lap(descB, B, NB, NB, LDB, NRHS, sequence, &request); + morse_sequence_wait(morse, sequence); + morse_desc_mat_free(&descA); + morse_desc_mat_free(&descB); + /* } else {*/ + /* morse_ziptile2lap( descA, A, NB, NB, LDA, N, sequence, &request);*/ + /* morse_ziptile2lap( descB, B, NB, NB, LDB, NRHS, sequence, &request);*/ + /* morse_sequence_wait(morse, sequence);*/ + /* }*/ status = sequence->status; morse_sequence_destroy(morse, sequence); @@ -335,7 +335,7 @@ int MORSE_zgels_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum trans, MORSE_desc_t *subA; MORSE_desc_t *subB; MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -383,55 +383,53 @@ int MORSE_zgels_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum trans, return morse_request_fail(sequence, request, MORSE_ERR_NOT_SUPPORTED); } /* Quick return - currently NOT equivalent to LAPACK's: - if (chameleon_min(M, chameleon_min(N, NRHS)) == 0) { - for (i = 0; i < chameleon_max(M, N); i++) - for (j = 0; j < NRHS; j++) - B[j*LDB+i] = 0.0; - return MORSE_SUCCESS; - } + if (chameleon_min(M, chameleon_min(N, NRHS)) == 0) { + for (i = 0; i < chameleon_max(M, N); i++) + for (j = 0; j < NRHS; j++) + B[j*LDB+i] = 0.0; + return MORSE_SUCCESS; + } */ if (A->m >= A->n) { #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzgeqrf_param(qrtree, A, TS, TT, &D, sequence, request); - morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzgeqrf_param(qrtree, A, TS, TT, NULL, sequence, request); - morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, NULL, sequence, request); + { + int n = chameleon_min(A->mt, A->nt) * A->nb; + morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, ); + Dptr = &D; + } #endif subB = morse_desc_submatrix(B, 0, 0, A->n, B->n); subA = morse_desc_submatrix(A, 0, 0, A->n, A->n); + + morse_pzgeqrf_param(qrtree, A, TS, TT, Dptr, sequence, request); + morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, Dptr, sequence, request); morse_pztrsm(MorseLeft, MorseUpper, MorseNoTrans, MorseNonUnit, 1.0, subA, subB, sequence, request); - free(subA); - free(subB); } else { - #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzgelqf_param(qrtree, A, TS, TT, &D, sequence, request); - subB = morse_desc_submatrix(B, 0, 0, A->m, B->n); - subA = morse_desc_submatrix(A, 0, 0, A->m, A->m); - morse_pztrsm(MorseLeft, MorseLower, MorseNoTrans, MorseNonUnit, 1.0, subA, subB, sequence, request); - free(subA); - free(subB); - morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzgelqf_param(qrtree, A, TS, TT, NULL, sequence, request); + { + int m = chameleon_min(A->mt, A->nt) * A->mb; + morse_zdesc_alloc(D, A->mb, A->nb, m, A->n, 0, 0, m, A->n, ); + Dptr = &D; + } +#endif + subB = morse_desc_submatrix(B, 0, 0, A->m, B->n); subA = morse_desc_submatrix(A, 0, 0, A->m, A->m); - morse_pztrsm(MorseLeft, MorseLower, MorseNoTrans, MorseNonUnit, 1.0, subA, subB, sequence, request); - free(subA); - free(subB); - morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, NULL, sequence, request); -#endif + morse_pzgelqf_param(qrtree, A, TS, TT, Dptr, sequence, request); + morse_pztrsm(MorseLeft, MorseLower, MorseNoTrans, MorseNonUnit, 1.0, subA, subB, sequence, request); + morse_pzunmlq_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, Dptr, sequence, request); } + free(subA); + free(subB); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zgeqrf_param.c b/compute/zgeqrf_param.c index 49020b8ef..8e84f2a2b 100644 --- a/compute/zgeqrf_param.c +++ b/compute/zgeqrf_param.c @@ -247,7 +247,7 @@ int MORSE_zgeqrf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -292,12 +292,18 @@ int MORSE_zgeqrf_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, return MORSE_SUCCESS; */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzgeqrf_param(qrtree, A, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzgeqrf_param(qrtree, A, TS, TT, NULL, sequence, request); + { + int n = chameleon_min(A->mt, A->nt) * A->nb; + morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, ); + Dptr = &D; + } #endif + + morse_pzgeqrf_param(qrtree, A, TS, TT, Dptr, sequence, request); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c index d90f30046..ed6aef62f 100644 --- a/compute/zgeqrs_param.c +++ b/compute/zgeqrs_param.c @@ -263,7 +263,7 @@ int MORSE_zgeqrs_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *subA; MORSE_desc_t *subB; MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -313,18 +313,25 @@ int MORSE_zgeqrs_param_Tile_Async(const libhqr_tree_t *qrtree, } */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, NULL, sequence, request); + { + int n = chameleon_min(A->mt, A->nt) * A->nb; + morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, ); + Dptr = &D; + } #endif subB = morse_desc_submatrix(B, 0, 0, A->n, B->n); subA = morse_desc_submatrix(A, 0, 0, A->n, A->n); + + morse_pzunmqr_param(qrtree, MorseLeft, MorseConjTrans, A, B, TS, TT, Dptr, sequence, request); morse_pztrsm(MorseLeft, MorseUpper, MorseNoTrans, MorseNonUnit, 1.0, subA, subB, sequence, request); + free(subA); free(subB); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zunglq_param.c b/compute/zunglq_param.c index c0e13b6df..d64930f41 100644 --- a/compute/zunglq_param.c +++ b/compute/zunglq_param.c @@ -254,7 +254,7 @@ int MORSE_zunglq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -304,14 +304,19 @@ int MORSE_zunglq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, return MORSE_SUCCESS; */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); - morse_pzunglq_param(qrtree, A, Q, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); - morse_pzunglq_param(qrtree, A, Q, TS, TT, NULL, sequence, request); + { + int m = chameleon_min(A->mt, A->nt) * A->mb; + morse_zdesc_alloc(D, A->mb, A->nb, m, A->n, 0, 0, m, A->n, ); + Dptr = &D; + } #endif + + morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); + morse_pzunglq_param(qrtree, A, Q, TS, TT, Dptr, sequence, request); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zungqr_param.c b/compute/zungqr_param.c index 16d94802b..8b4f7e461 100644 --- a/compute/zungqr_param.c +++ b/compute/zungqr_param.c @@ -254,7 +254,7 @@ int MORSE_zungqr_param_Tile(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_ int MORSE_zungqr_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, MORSE_desc_t *TS, MORSE_desc_t *TT, MORSE_desc_t *Q, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { morse_fatal_error("MORSE_zungqr_param_Tile", "MORSE not initialized"); @@ -300,16 +300,21 @@ int MORSE_zungqr_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_desc_t *A, /* if (N <= 0) return MORSE_SUCCESS; -*/ + */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); - morse_pzungqr_param(qrtree, A, Q, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); - morse_pzungqr_param(qrtree, A, Q, TS, TT, NULL, sequence, request); + { + int n = chameleon_min(A->mt, A->nt) * A->nb; + morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, ); + Dptr = &D; + } #endif + + morse_pzlaset(MorseUpperLower, 0., 1., Q, sequence, request); + morse_pzungqr_param(qrtree, A, Q, TS, TT, Dptr, sequence, request); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zunmlq_param.c b/compute/zunmlq_param.c index 4aac83e45..cace1d697 100644 --- a/compute/zunmlq_param.c +++ b/compute/zunmlq_param.c @@ -310,7 +310,7 @@ int MORSE_zunmlq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum side, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -367,12 +367,18 @@ int MORSE_zunmlq_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_enum side, */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzunmlq_param(qrtree, side, trans, A, C, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzunmlq_param(qrtree, side, trans, A, C, TS, TT, NULL, sequence, request); + { + int m = chameleon_min(A->mt, A->nt) * A->mb; + morse_zdesc_alloc(D, A->mb, A->nb, m, A->n, 0, 0, m, A->n, ); + Dptr = &D; + } #endif + + morse_pzunmlq_param(qrtree, side, trans, A, C, TS, TT, Dptr, sequence, request); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } diff --git a/compute/zunmqr_param.c b/compute/zunmqr_param.c index a73e7ff4f..2a101ace3 100644 --- a/compute/zunmqr_param.c +++ b/compute/zunmqr_param.c @@ -317,7 +317,7 @@ int MORSE_zunmqr_param_Tile_Async(const libhqr_tree_t *qrtree, MORSE_sequence_t *sequence, MORSE_request_t *request) { MORSE_context_t *morse; - MORSE_desc_t D; + MORSE_desc_t D, *Dptr = NULL; morse = morse_context_self(); if (morse == NULL) { @@ -374,12 +374,18 @@ int MORSE_zunmqr_param_Tile_Async(const libhqr_tree_t *qrtree, */ #if defined(CHAMELEON_COPY_DIAG) - morse_zdesc_alloc(D, A->mb, A->nb, A->m, chameleon_min(A->m, A->n), 0, 0, A->m, chameleon_min(A->m, A->n), ); - morse_pzunmqr_param(qrtree, side, trans, A, C, TS, TT, &D, sequence, request); - morse_desc_mat_free(&D); -#else - morse_pzunmqr_param(qrtree, side, trans, A, C, TS, TT, NULL, sequence, request); + { + int n = chameleon_min(A->mt, A->nt) * A->nb; + morse_zdesc_alloc(D, A->mb, A->nb, A->m, n, 0, 0, A->m, n, ); + Dptr = &D; + } #endif + + morse_pzunmqr_param(qrtree, side, trans, A, C, TS, TT, Dptr, sequence, request); + + if (Dptr != NULL) { + morse_desc_mat_free(Dptr); + } (void)D; return MORSE_SUCCESS; } -- GitLab