diff --git a/control/compute_z.h b/control/compute_z.h index 06c8854c1b05a7c1bffbca0fa8e615218363672d..12ec9e909e0a18cd40ff2e168aaf402ea7939f3e 100644 --- a/control/compute_z.h +++ b/control/compute_z.h @@ -23,7 +23,7 @@ * @author Matthieu Kuhn * @author Lionel Eyraud-Dubois * @author Ana Hourcau - * @date 2024-07-17 + * @date 2024-10-17 * @precisions normal z -> c d s * */ @@ -52,6 +52,49 @@ struct chameleon_pzgetrf_s { int involved:1; }; +/** + * @brief Data structure to handle the GETRF temporary workspaces + * for MPI transfers. + * + * @comment The idea is to manage explicitely temporary + * blocks arising from MPI transfers automatically + * inferred by StarPU, hence limiting the total number + * of temporary data allocated for these blocks. + * + * The blocks to be sent/received on the network are + * copied into those buffers. These copies are + * then used by the algorithm in place of the regular + * blocks of the problem matrix. + * + * For WL (resp. WU), the number of allocated blocks + * corresponds to the number of blocks on the column + * (resp. on the line) multiplied by lookahead number + * from the current chameleon context. + * + * Then, depending on the block panel index, we access + * one of the temporary column blocks of WL and row blocks + * of WU int a circular way. + * + * For instance, for the block panel index k, the block + * A(m,k) produced by the TRSM(A(k,k),A(m,k)) is stored + * into temporary buffer WL(m,k%chamctxt->lookahead). + * Similarly, the block A(k,n) is stored into the temporary + * block WU(k%chamctxt->lookahead, n). + * + * Notice that, by doing so, the notion of look ahead is + * reintroduced : artificial dependencies are implied by + * the circular usage of WL and WU temporary workspaces. + * + */ +struct chameleon_pzgetrf_nopiv_s { + int use_workspace; + + CHAM_desc_t WL; /* Workspace to store temporary blocks of the */ + /* diagonal and the lower part of the problem matrix */ + CHAM_desc_t WU; /* Workspace to store temporary blocks of the */ + /* upper part of the problem matrix */ +}; + /** * @brief Data structure to handle the Centering-Scaled workspaces */