From 0a26f77ae807f5e8cd89c6192b9ff459e0b6e92e Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Tue, 16 Mar 2021 14:33:42 +0100 Subject: [PATCH] Update zheevd --- compute/zheevd.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/compute/zheevd.c b/compute/zheevd.c index 0b654448b..79ef6a4f7 100644 --- a/compute/zheevd.c +++ b/compute/zheevd.c @@ -340,6 +340,7 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo, CHAM_desc_t descQ2l, descQ2t; CHAM_desc_t descVl, descVt; CHAM_desc_t *subA, *subQ, *subT; + void *gemm_ws; chamctxt = chameleon_context_self(); if (chamctxt == NULL) { @@ -470,6 +471,11 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo, chameleon_zlap2tile( chamctxt, &descVl, &descVt, ChamDescInput, ChamUpperLower, V, NB, NB, N, N, N, N, sequence, request ); + /* Workspaces used for gemm */ + gemm_ws = CHAMELEON_zgemm_WS_Alloc( ChamNoTrans, ChamNoTrans, + &descQ2t, &descVt, + &descA ); + if (uplo == ChamLower) { #if defined(CHAMELEON_COPY_DIAG) @@ -489,7 +495,7 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo, sequence, request ); /* Compute the final eigenvectors A = (Q1 * Q2) * V */ - chameleon_pzgemm( ChamNoTrans, ChamNoTrans, + chameleon_pzgemm( gemm_ws, ChamNoTrans, ChamNoTrans, 1.0, &descQ2t, &descVt, 0.0, &descA, sequence, request ); @@ -513,7 +519,7 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo, sequence, request ); /* Compute the final eigenvectors A = (Q1^h * Q2) * V */ - chameleon_pzgemm( ChamNoTrans, ChamNoTrans, + chameleon_pzgemm( gemm_ws, ChamNoTrans, ChamNoTrans, 1.0, &descQ2t, &descVt, 0.0, &descA, sequence, request ); @@ -527,6 +533,7 @@ int CHAMELEON_zheevd_Tile_Async( cham_job_t jobz, cham_uplo_t uplo, chameleon_sequence_wait( chamctxt, sequence ); /* Cleanup the temporary data */ + CHAMELEON_zgemm_WS_Free( gemm_ws ); chameleon_ztile2lap_cleanup( chamctxt, &descQ2l, &descQ2t ); chameleon_ztile2lap_cleanup( chamctxt, &descVl, &descVt ); -- GitLab