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