22 #include "sopalin/sopalin_data.h"
60 for (k=0; k<solvmtx->
cblknbr; k++, cblk++){
62 if ( cblk->
cblktype & CBLK_IN_SCHUR ) {
73 for(m=0; blok < lblk; blok++, m++ )
76 cblk_n = fcblk - solvmtx->
cblktab;
80 cblknbr - pastix_imin( k + m, cblk_n ) );
120 for ( k = 0; k < solvmtx->
cblknbr; k++, cblk++ ) {
122 for ( m = cblk[0].brownum; m < cblk[1].
brownum; m++ ) {
126 if ( lcblk->
cblktype & CBLK_IN_SCHUR ) {
131 cblk_n = fcblk - solvmtx->
cblktab;
133 assert( fcblk == cblk );
137 cblknbr - pastix_imin( k + m, cblk_n ) );
140 if ( cblk->
cblktype & CBLK_IN_SCHUR ) {
149 for ( k = 0; k < solvmtx->
cblknbr; k++, cblk++ ) {
191 for (k=0; k<=solvmtx->
cblkmax1d; k++, cblk++){
193 if ( cblk->
cblktype & CBLK_IN_SCHUR ) {
197 if ( cblk->
cblktype & CBLK_TASKS_2D ) {
208 for(m=0; blok < lblk; blok++, m++ )
211 cblk_n = fcblk - solvmtx->
cblktab;
215 cblknbr - pastix_imin( k + m, cblk_n ) );
223 for (k=solvmtx->
cblkmin2d; k<solvmtx->cblknbr; k++, cblk++, cblkhandle++){
225 if ( !(cblk->
cblktype & CBLK_TASKS_2D) ) {
229 if ( cblk->
cblktype & CBLK_IN_SCHUR ) {
237 for(blokA=cblk->
fblokptr + 1, m=0; blokA<lblk; blokA++, m++) {
246 for(blokB=cblk->
fblokptr + 1; blokB<=blokA; blokB++) {
251 cblknbr - pastix_imin( k + m, cblk_n ) );
254 while( (blokB < blokA) &&
255 (blokB[0].fcblknm == blokB[1].fcblknm) &&
256 (blokB[0].lcblknm == blokB[1].lcblknm) )
263 while( (blokA < lblk) &&
264 (blokA[0].fcblknm == blokA[1].fcblknm) &&
265 (blokA[0].lcblknm == blokA[1].lcblknm) )
303 sopalin_data_t *sopalin_data )
312 if (pastix_data->
starpu == NULL) {
317 if ( sdesc == NULL ) {
324 sdesc = sopalin_data->
solvmtx->starpu_desc;
327 starpu_profiling_status_set(STARPU_PROFILING_ENABLE);
328 #if defined(STARPU_USE_FXT)
330 starpu_fxt_start_profiling();
333 #if defined(PASTIX_STARPU_STATS)
356 #if defined(PASTIX_STARPU_STATS)
361 starpu_task_wait_for_all();
362 #if defined(PASTIX_WITH_MPI)
363 starpu_mpi_wait_for_all( pastix_data->
pastix_comm );
367 #if defined(STARPU_USE_FXT)
369 starpu_fxt_stop_profiling();
372 starpu_profiling_status_set(STARPU_PROFILING_DISABLE);
373 #if defined(PASTIX_STARPU_STATS)
375 print_stats( sub, com, pastix_data->
solvmatr );
BEGIN_C_DECLS typedef int pastix_int_t
starpu_cblk_t * cblktab_handle
void starpu_sparse_matrix_getoncpu(starpu_sparse_matrix_desc_t *desc)
Submit asynchronous calls to retrieve the data on main memory.
void starpu_task_blok_cpxtrf(sopalin_data_t *sopalin_data, SolverCblk *cblk, int prio)
TODO.
void starpu_task_cblk_cpxtrfsp(sopalin_data_t *sopalin_data, SolverCblk *cblk, int prio)
TODO.
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_task_blok_ctrsmsp(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, SolverBlok *blok, int prio)
StarPU GPU implementation.
void starpu_task_cblk_cgemmsp(sopalin_data_t *sopalin_data, pastix_coefside_t sideA, pastix_coefside_t sideB, pastix_trans_t trans, const SolverCblk *cblk, const SolverBlok *blok, SolverCblk *fcblk, int prio)
StarPU GPU implementation.
void starpu_sparse_cblk_wont_use(pastix_coefside_t coef, SolverCblk *cblk)
Submit asynchronous calls to retrieve the data on main memory.
void starpu_task_blok_cgemmsp(sopalin_data_t *sopalin_data, pastix_coefside_t sideA, pastix_coefside_t sideB, pastix_trans_t trans, SolverCblk *cblk, SolverCblk *fcblk, const SolverBlok *blokA, const SolverBlok *blokB, int prio)
StarPU GPU implementation.
Additional StarPU handlers for a column-block when using 2D kernels.
StarPU descriptor stucture for the sparse matrix.
PASTIX_Comm inter_node_comm
Main PaStiX data structure.
void starpu_cpxtrf_sp1dplus_ll(sopalin_data_t *sopalin_data, starpu_sparse_matrix_desc_t *desc)
Perform a sparse LL^t factorization with 1D kernels.
void starpu_cpxtrf_sp1dplus_rl(sopalin_data_t *sopalin_data, starpu_sparse_matrix_desc_t *desc)
Perform a sparse LL^t factorization with 1D kernels.
void starpu_cpxtrf(pastix_data_t *pastix_data, sopalin_data_t *sopalin_data)
Perform a sparse LL^t factorization using StarPU runtime.
void starpu_cpxtrf_sp2d(sopalin_data_t *sopalin_data, starpu_sparse_matrix_desc_t *desc)
Perform a sparse LL^t factorization with 1D and 2D kernels.
SolverBlok *restrict bloktab
pastix_int_t *restrict browtab
SolverCblk *restrict cblktab
Solver column block structure.
Solver column block structure.