diff --git a/include/chameleon/struct.h b/include/chameleon/struct.h index efa64a1c534b8472c4514cedb330919b31d4fa0c..d7dd07f48dc6fad1cff9359bf3410defdd657357 100644 --- a/include/chameleon/struct.h +++ b/include/chameleon/struct.h @@ -19,7 +19,7 @@ * @author Samuel Thibault * @author Matthieu Kuhn * @author Lionel Eyraud-Dubois - * @date 2023-07-05 + * @date 2023-08-22 * */ #ifndef _chameleon_struct_h_ @@ -137,6 +137,25 @@ struct chameleon_desc_s { void *schedopt; // scheduler (QUARK|StarPU) specific structure }; +/** + * CHAMELEON structure to hold pivot informations for the LU factorization with partial pivoting + */ +typedef struct chameleon_piv_s { + const CHAM_desc_t *desc; /**> Reference descriptor to compute data mapping based on diagonal tiles, + and get floating reference type */ + int *data; /**> Pointer to the data */ + void *ipiv; /**> Opaque array of pointers for the runtimes to handle the ipiv array */ + void *nextpiv; /**> Opaque array of pointers for the runtimes to handle the pivot computation structure */ + void *prevpiv; /**> Opaque array of pointers for the runtimes to handle the pivot computation structure */ + int64_t mpitag_ipiv; /**> Initial mpi tag values for the ipiv handles */ + int64_t mpitag_nextpiv; /**> Initial mpi tag values for the nextpiv handles */ + int64_t mpitag_prevpiv; /**> Initial mpi tag values for the prevpiv handles */ + int i; /**> row index to the beginning of the submatrix */ + int m; /**> The number of row in the vector ipiv */ + int mb; /**> The number of row per block */ + int mt; /**> The number of tiles */ + int n; /**> The number of column considered (must be updated for each panel) */ +} CHAM_ipiv_t; /** * CHAMELEON request uniquely identifies each asynchronous function call.