From f344492ce80557984e60b06bdcd7734701d5c7f2 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Thu, 4 May 2023 15:23:00 +0200 Subject: [PATCH] getrf: Remove unused desc parameter in WS_free --- compute/zgetrf.c | 34 ++++++++++++++++++++++----------- include/chameleon/chameleon_z.h | 2 +- testing/testing_zgetrf.c | 2 +- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/compute/zgetrf.c b/compute/zgetrf.c index c99ae3f80..97f010bb9 100644 --- a/compute/zgetrf.c +++ b/compute/zgetrf.c @@ -52,26 +52,26 @@ void * CHAMELEON_zgetrf_WS_Alloc( const CHAM_desc_t *A ) { - CHAM_context_t *chamctxt; - struct chameleon_pzgetrf_s *options; + CHAM_context_t *chamctxt; + struct chameleon_pzgetrf_s *ws; chamctxt = chameleon_context_self(); if ( chamctxt == NULL ) { return NULL; } - options = calloc( 1, sizeof( struct chameleon_pzgetrf_s ) ); - options->ib = CHAMELEON_IB; + ws = calloc( 1, sizeof( struct chameleon_pzgetrf_s ) ); + ws->ib = CHAMELEON_IB; #if defined(GETRF_NOPIV_PER_COLUMN) - chameleon_desc_init( &(options->U), CHAMELEON_MAT_ALLOC_TILE, + chameleon_desc_init( &(ws->U), CHAMELEON_MAT_ALLOC_TILE, ChamComplexDouble, 1, A->nb, A->nb, A->mt, A->nt * A->nb, 0, 0, A->mt, A->nt * A->nb, A->p, A->q, NULL, NULL, A->get_rankof_init ); #endif - return options; + return ws; } /** @@ -94,14 +94,13 @@ CHAMELEON_zgetrf_WS_Alloc( const CHAM_desc_t *A ) * */ void -CHAMELEON_zgetrf_WS_Free( const CHAM_desc_t *A, void *user_ws ) +CHAMELEON_zgetrf_WS_Free( void *user_ws ) { struct chameleon_pzgetrf_s *ws = (struct chameleon_pzgetrf_s *)user_ws; #if defined(GETRF_NOPIV_PER_COLUMN) chameleon_desc_destroy( &(ws->U) ); #endif - free( ws ); } @@ -210,7 +209,7 @@ CHAMELEON_zgetrf( int M, int N, CHAMELEON_Complex64_t *A, int *IPIV, int LDA ) chameleon_sequence_wait( chamctxt, sequence ); /* Cleanup the temporary data */ - CHAMELEON_zgetrf_WS_Free( &descAt, ws ); + CHAMELEON_zgetrf_WS_Free( ws ); chameleon_ztile2lap_cleanup( chamctxt, &descAl, &descAt ); status = sequence->status; @@ -275,7 +274,7 @@ CHAMELEON_zgetrf_Tile( CHAM_desc_t *A ) CHAMELEON_Desc_Flush( A, sequence ); chameleon_sequence_wait( chamctxt, sequence ); - CHAMELEON_zgetrf_WS_Free( A, ws ); + CHAMELEON_zgetrf_WS_Free( ws ); status = sequence->status; chameleon_sequence_destroy( chamctxt, sequence ); @@ -321,7 +320,8 @@ CHAMELEON_zgetrf_Tile_Async( CHAM_desc_t *A, RUNTIME_sequence_t *sequence, RUNTIME_request_t *request ) { - CHAM_context_t *chamctxt; + CHAM_context_t *chamctxt; + struct chameleon_pzgetrf_s *ws; chamctxt = chameleon_context_self(); if ( chamctxt == NULL ) { @@ -364,7 +364,19 @@ CHAMELEON_zgetrf_Tile_Async( CHAM_desc_t *A, return chameleon_request_fail( sequence, request, CHAMELEON_ERR_ILLEGAL_VALUE ); } + if ( user_ws == NULL ) { + ws = CHAMELEON_zgetrf_WS_Alloc( A ); + } + else { + ws = user_ws; + } + chameleon_pzgetrf( user_ws, A, sequence, request ); + if ( user_ws == NULL ) { + CHAMELEON_Desc_Flush( A, sequence ); + chameleon_sequence_wait( chamctxt, sequence ); + CHAMELEON_zgetrf_WS_Free( ws ); + } return CHAMELEON_SUCCESS; } diff --git a/include/chameleon/chameleon_z.h b/include/chameleon/chameleon_z.h index e587d015c..1f04c61aa 100644 --- a/include/chameleon/chameleon_z.h +++ b/include/chameleon/chameleon_z.h @@ -324,7 +324,7 @@ void CHAMELEON_zcesca_WS_Free( void *ws ); void *CHAMELEON_zgram_WS_Alloc( const CHAM_desc_t *A ); void CHAMELEON_zgram_WS_Free( void *ws ); void *CHAMELEON_zgetrf_WS_Alloc( const CHAM_desc_t *A ); -void CHAMELEON_zgetrf_WS_Free( const CHAM_desc_t *A, void *ws ); +void CHAMELEON_zgetrf_WS_Free( void *ws ); int CHAMELEON_Alloc_Workspace_zgesv_incpiv( int N, CHAM_desc_t **descL, int **IPIV, int p, int q); int CHAMELEON_Alloc_Workspace_zgetrf_incpiv(int M, int N, CHAM_desc_t **descL, int **IPIV, int p, int q); diff --git a/testing/testing_zgetrf.c b/testing/testing_zgetrf.c index e075741c3..b41ee056d 100644 --- a/testing/testing_zgetrf.c +++ b/testing/testing_zgetrf.c @@ -122,7 +122,7 @@ testing_zgetrf_desc( run_arg_list_t *args, int check ) #endif /* !defined(CHAMELEON_SIMULATION) */ if ( ws != NULL ) { - CHAMELEON_zgetrf_WS_Free( descA, ws ); + CHAMELEON_zgetrf_WS_Free( ws ); } CHAMELEON_Desc_Destroy( &descA ); -- GitLab