Mentions légales du service

Skip to content
Snippets Groups Projects
Commit a93a7cd6 authored by Matthieu KUHN's avatar Matthieu KUHN Committed by Mathieu Faverge
Browse files

compute_z.h: Add an option structure for the MPI getrf nopiv algorithm to...

compute_z.h: Add an option structure for the MPI getrf nopiv algorithm to manage explicitely the communications and enforce a lookahead turnover in the communications
parent 521fe1d6
No related branches found
No related tags found
1 merge request!307GETRF NOPIV: Use explicit workspaces to control the communication flow
......@@ -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
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment