diff --git a/src/chameleon.c b/src/chameleon.c index c6aa22e9d5e9e7c65cbe9839c1f0d5a215d9fcad..0d758fe54f595aaf96f187ab4f7d724549646762 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 f812833d82e0e7277fedda80cf4cae5d2b1215c1..fcdfeeeb34c28e4f78ed02d8cd53d75d9e664c28 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++) {