From 0aaa42cc3feb3a199ccdee87601d5d124350281a Mon Sep 17 00:00:00 2001 From: Raphael Boucherie <raphael.boucherie@inria.fr> Date: Mon, 3 Jul 2017 18:05:47 +0200 Subject: [PATCH] fixed alloc of diag --- compute/pzgebrd_ge2gb.c | 3 +-- compute/zgesvd.c | 26 ++++++++------------------ 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/compute/pzgebrd_ge2gb.c b/compute/pzgebrd_ge2gb.c index 443e53212..b9d0ec1e6 100644 --- a/compute/pzgebrd_ge2gb.c +++ b/compute/pzgebrd_ge2gb.c @@ -25,12 +25,11 @@ **/ #include "control/common.h" -void morse_pzgebrd_ge2gb(MORSE_desc_t A, MORSE_desc_t T, +void morse_pzgebrd_ge2gb(MORSE_desc_t A, MORSE_desc_t T, MORSE_desc_t D, MORSE_sequence_t *sequence, MORSE_request_t *request) { int k; int tempkm, tempkn; - MORSE_desc_t D; if (A.m >= A.n){ for (k = 0; k < A.nt; k++) { tempkm = k == A.mt-1 ? A.m-k*A.mb : A.mb; diff --git a/compute/zgesvd.c b/compute/zgesvd.c index 1f312e220..4aea26f51 100644 --- a/compute/zgesvd.c +++ b/compute/zgesvd.c @@ -460,9 +460,14 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt, NB = descA.mb; LDAB = NB + 1; uplo = M >= N ? MorseUpper : MorseLower; - +#if defined(CHAMELEON_COPY_DIAG) + { + morse_zdesc_alloc(D, A->mb, A->nb, A->m, A->n, 0, 0, A->m, A->n, ); + Dptr = &D; + } +#endif /* Reduction to band */ - morse_pzgebrd_ge2gb( descA, descT, + morse_pzgebrd_ge2gb( descA, descT, D, sequence, request ); /* Allocate band structure */ @@ -552,14 +557,6 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt, subT = NULL; subUVT = NULL; if ( jobu != MorseNoVec ) { -#if defined(CHAMELEON_COPY_DIAG) - { - 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 - if ( M < N ){ subA = morse_desc_submatrix(&descA, descA.mb, 0, descA.m-descA.mb, descA.n-descA.nb); subUVT = morse_desc_submatrix(&descU, descU.mb, 0, descU.m-descU.mb, descU.n); @@ -576,14 +573,7 @@ int MORSE_zgesvd_Tile_Async(MORSE_enum jobu, MORSE_enum jobvt, } if ( jobvt != MorseNoVec ) { -#if defined(CHAMELEON_COPY_DIAG) - { - 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 - if ( M < N ){ + if ( M < N ){ morse_pzunmlq( MorseRight, MorseNoTrans, &descA, &descVT, &descT, Dptr, sequence, request ); -- GitLab