24 #include "sopalin/sopalin_data.h"
55 sopalin_data_t *sopalin_data,
70 if ( (cblk->
cblktype & CBLK_IN_SCHUR) && (mode != PastixSolvModeSchur) ) {
112 sopalin_data, cs, side,
PastixLower, tA, diag, cblk, prio );
115 for (blok = cblk[0].fblokptr+1; blok < cblk[1].
fblokptr; blok++ ) {
118 if ( (fcbk->
cblktype & CBLK_IN_SCHUR) && (mode == PastixSolvModeLocal) ) {
123 cblk, blok, fcbk, prio );
153 sopalin_data_t *sopalin_data,
205 if ( !(cblk->
cblktype & CBLK_IN_SCHUR) || (mode == PastixSolvModeSchur) ) {
208 sopalin_data, cs, side,
PastixLower, tA, diag, cblk, prio );
212 for (j = cblk[1].brownum-1; j>=cblk[0].
brownum; j-- ) {
216 if ( (fcbk->
cblktype & CBLK_IN_SCHUR) && (mode == PastixSolvModeInterface) ) {
221 cblk, blok, fcbk, prio );
245 sopalin_data_t *sopalin_data,
253 if ( enums->solve_step == PastixSolveBackward ) {
254 cblknbr = (enums->mode == PastixSolvModeLocal) ? datacode->
cblkschur : datacode->
cblknbr;
256 cblk = datacode->
cblktab + cblknbr - 1;
257 for (i=0; i<cblknbr; i++, cblk--){
263 cblknbr = (enums->mode == PastixSolvModeSchur) ? datacode->
cblknbr : datacode->
cblkschur;
266 for (i=0; i<cblknbr; i++, cblk++){
298 sopalin_data_t *sopalin_data,
307 if (pastix_data->
starpu == NULL) {
312 if ( sdesc == NULL ) {
319 sdesc = sopalin_data->
solvmtx->starpu_desc;
324 rhsb->
n, rhsb->
b, rhsb->
ld,
325 sizeof(pastix_complex64_t),
328 ddesc = sopalin_data->
solvmtx->starpu_desc_rhs;
330 #if defined(STARPU_USE_FXT)
332 starpu_fxt_start_profiling();
340 starpu_task_wait_for_all();
341 #if defined(PASTIX_WITH_MPI)
342 starpu_mpi_wait_for_all( pastix_data->
pastix_comm );
346 #if defined(STARPU_USE_FXT)
348 starpu_fxt_stop_profiling();
BEGIN_C_DECLS typedef int pastix_int_t
enum pastix_diag_e pastix_diag_t
Diagonal.
enum pastix_solv_mode_e pastix_solv_mode_t
Solve Schur modes.
enum pastix_uplo_e pastix_uplo_t
Upper/Lower part.
enum pastix_side_e pastix_side_t
Side of the operation.
enum pastix_trans_e pastix_trans_t
Transpostion.
enum pastix_coefside_e pastix_coefside_t
Data blocks used in the kernel.
void starpu_dense_matrix_init(SolverMatrix *solvmtx, pastix_int_t ncol, char *A, pastix_int_t lda, int typesze, int nodes, int myrank)
Generate the StarPU descriptor of the dense matrix.
void starpu_sparse_matrix_getoncpu(starpu_sparse_matrix_desc_t *desc)
Submit asynchronous calls to retrieve the data on main memory.
void starpu_sparse_matrix_init(SolverMatrix *solvmtx, pastix_mtxtype_t mtxtype, int nodes, int myrank, pastix_coeftype_t flttype)
Generate the StarPU descriptor of the sparse matrix.
void pastix_starpu_init(pastix_data_t *pastix, int *argc, char **argv[], const int *bindtab)
Startup the StarPU runtime system.
void starpu_stask_blok_zgemm(sopalin_data_t *sopalin_data, pastix_coefside_t coef, pastix_side_t side, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcbk, pastix_int_t prio)
Submit a task to perform a gemm.
void starpu_dense_matrix_getoncpu(starpu_dense_matrix_desc_t *desc)
Submit asynchronous calls to retrieve the data on main memory.
StarPU descriptor for the vectors linked to a given sparse matrix.
StarPU descriptor stucture for the sparse matrix.
PASTIX_Comm inter_node_comm
Main PaStiX data structure.
Main PaStiX RHS structure.
void starpu_ztrsm(pastix_data_t *pastix_data, const args_solve_t *enums, sopalin_data_t *sopalin_data, pastix_rhs_t rhsb)
Apply the TRSM solve (StarPU version).
void starpu_ztrsm_sp1dplus(pastix_data_t *pastix_data, sopalin_data_t *sopalin_data, const args_solve_t *enums)
Apply a TRSM on a problem with 1 dimension (StarPU version)
void starpu_cblk_ztrsmsp_forward(const args_solve_t *enums, sopalin_data_t *sopalin_data, const SolverCblk *cblk, pastix_int_t prio)
Apply a forward solve related to one cblk to all the right hand side. (StarPU version)
void starpu_cblk_ztrsmsp_backward(const args_solve_t *enums, sopalin_data_t *sopalin_data, const SolverCblk *cblk, pastix_int_t prio)
Apply a backward solve related to one cblk to all the right hand side. (StarPU version)
void starpu_stask_blok_ztrsm(sopalin_data_t *sopalin_data, pastix_coefside_t coef, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, const SolverCblk *cblk, pastix_int_t prio)
Submit a task to do a trsm related to a diagonal block of the matrix A.
SolverBlok *restrict bloktab
pastix_int_t *restrict browtab
SolverCblk *restrict cblktab
Solver column block structure.
Solver column block structure.