From 512b762cb9b2216452af2576f80e403336ef9dd8 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Mon, 11 Mar 2024 15:11:18 +0100 Subject: [PATCH] map: Update to the new map interface --- src/chameleon.c | 20 +++++++++++++++----- src/hchameleon.c | 21 ++++++++++++++++----- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/chameleon.c b/src/chameleon.c index c6aa22e..0d758fe 100644 --- a/src/chameleon.c +++ b/src/chameleon.c @@ -93,9 +93,9 @@ int CHAMELEON_gemm_Tile( CHAM_desc_t *descA, // indices are 0 based, bounds included static int -CHAMELEON_build_callback_FEMBEM( const CHAM_desc_t *desc, - cham_uplo_t uplo, int m, int n, - CHAM_tile_t *tile, void *op_args ) +CHAMELEON_build_callback_FEMBEM( void *op_args, + cham_uplo_t uplo, int m, int n, int ndata, + const CHAM_desc_t *desc, CHAM_tile_t *tile, ... ) { ASSERTA(tile); @@ -110,12 +110,15 @@ CHAMELEON_build_callback_FEMBEM( const CHAM_desc_t *desc, &Mpf_i_zero, &Mpf_i_one, &Mpf_i_one, &Mpf_i_one, &size_of_buffer, &(tile->ld), tile->mat, op_args ); + (void)ndata; return 0; } int CHAMELEON_generate_matrix( cham_flttype_t flttype, int NB, int PQ[2], CHAM_desc_t **descA ) { + cham_map_data_t data; + cham_map_operator_t op; int ierr; int N = nbPts; cham_uplo_t uplo = symMatSolver ? ChamLower : ChamUpperLower; @@ -133,8 +136,15 @@ CHAM_desc_t **descA ) CHKERRQ(ierr); // Assembly driven by chameleon and using the callback CHAMELEON_build_callback_FEMBEM() defined above - ierr = CHAMELEON_map_Tile( ChamW, uplo, *descA, - CHAMELEON_build_callback_FEMBEM, myCtx ); + data.access = ChamW; + data.desc = *descA; + + op.name = "BuildFEMBEM"; + op.cpufunc = CHAMELEON_build_callback_FEMBEM; + op.cudafunc = NULL; + op.hipfunc = NULL; + + ierr = CHAMELEON_map_Tile( uplo, 1, &data, &op, myCtx ); CHKERRQ(ierr); MpfFree( myCtx ); diff --git a/src/hchameleon.c b/src/hchameleon.c index f812833..fcdfeee 100644 --- a/src/hchameleon.c +++ b/src/hchameleon.c @@ -28,9 +28,9 @@ inline static int chameleon_desc_islocal( const CHAM_desc_t *A, int m, int n ) // indices are 0 based, bounds included /* Initialize a given tile with an h-matrix, given the row and cluster tree */ static int -HCHAMELEON_build_callback_FEMBEM( const CHAM_desc_t *desc, - cham_uplo_t uplo, int m, int n, - CHAM_tile_t *tile, void *op_args ) +HCHAMELEON_build_callback_FEMBEM( void *op_args, + cham_uplo_t uplo, int m, int n, int ndata, + const CHAM_desc_t *desc, CHAM_tile_t *tile, ... ) { contextTestFEMBEM ctx_fembem; struct mpf_hmat_create_compression_args_t compression_ctx; @@ -191,8 +191,19 @@ hmat_interface_t *hi ) */ #if 1 cham_uplo_t uplo = symMatSolver ? ChamLower : ChamUpperLower; - ierr = CHAMELEON_map_Tile( ChamW, uplo, descA, - HCHAMELEON_build_callback_FEMBEM, hdescA ); + cham_map_data_t data; + cham_map_operator_t op; + + data.access = ChamW; + data.desc = *descA; + + op.name = "BuildFEMBEM-H"; + op.cpufunc = HCHAMELEON_build_callback_FEMBEM; + op.cudafunc = NULL; + op.hipfunc = NULL; + + ierr = CHAMELEON_map_Tile( uplo, 1, &data, &op, hdescA ); + CHKERRQ(ierr); #else tile = descA->tiles; for(j=0; j < descA->lnt; j++) { -- GitLab