21 #include <parsec/data_distribution.h>
22 #include <parsec/private_mempool.h>
23 #include <parsec/arena.h>
24 #include <parsec/data_dist/matrix/matrix.h>
27 #include "sopalin/sopalin_data.h"
28 #include "chetrf_sp1dplus.h"
29 #include "chetrf_sp2d.h"
80 sopalin_data_t *sopalin_data )
83 unsigned int gemmmax = sopalin_data->solvmtx->gemmmax;
84 unsigned int offdmax = sopalin_data->solvmtx->offdmax;
85 unsigned int blokmax = sopalin_data->solvmtx->blokmax;
88 lwork = pastix_imax( gemmmax, blokmax );
90 (sopalin_data->solvmtx->lowrank.ilu_lvl < INT_MAX) )
92 lwork = pastix_imax( lwork, 2 * blokmax );
103 parsec_datatype_complex_t );
106 parsec_datatype_complex_t, offdmax, 1, offdmax );
108 #if defined(PASTIX_GENERATE_MODEL)
138 parsec_taskpool_free( taskpool );
182 sopalin_data_t *sopalin_data )
194 parsec_context_start( parsec );
195 parsec_context_wait( parsec );
250 sopalin_data_t *sopalin_data )
253 unsigned int gemmmax = sopalin_data->solvmtx->gemmmax;
254 unsigned int offdmax = sopalin_data->solvmtx->offdmax;
255 unsigned int blokmax = sopalin_data->solvmtx->blokmax;
258 lwork = pastix_imax( gemmmax, blokmax );
260 (sopalin_data->solvmtx->lowrank.ilu_lvl < INT_MAX) )
262 lwork = pastix_imax( lwork, 2 * blokmax );
267 parsec_chetrf_sp2d->_g_p_work = (parsec_memory_pool_t*)malloc(
sizeof(parsec_memory_pool_t));
273 parsec_datatype_complex_t );
275 parsec_matrix_add2arena_rect(
parsec_chetrf_sp2d->arenas[PARSEC_chetrf_sp2d_CBLK_WS_ARENA],
276 parsec_datatype_complex_t,
277 offdmax, 1, offdmax );
279 parsec_matrix_add2arena_rect(
parsec_chetrf_sp2d->arenas[PARSEC_chetrf_sp2d_BLOK_WS_ARENA],
280 parsec_datatype_complex_t,
281 blokmax, 1, blokmax );
283 #if defined(PASTIX_GENERATE_MODEL)
308 parsec_matrix_del2arena(
parsec_chetrf_sp2d->arenas[PARSEC_chetrf_sp2d_CBLK_WS_ARENA] );
310 parsec_matrix_del2arena(
parsec_chetrf_sp2d->arenas[PARSEC_chetrf_sp2d_BLOK_WS_ARENA] );
316 parsec_taskpool_free( taskpool );
360 sopalin_data_t *sopalin_data )
372 parsec_context_start( parsec );
373 parsec_context_wait( parsec );
412 sopalin_data_t *sopalin_data )
415 parsec_context_t *ctx;
420 if (pastix_data->
parsec == NULL) {
424 ctx = pastix_data->
parsec;
426 if ( sdesc == NULL ) {
432 sdesc = sopalin_data->
solvmtx->parsec_desc;
BEGIN_C_DECLS typedef int pastix_int_t
float _Complex pastix_complex32_t
int parsec_chetrf_sp1dplus(parsec_context_t *parsec, parsec_sparse_matrix_desc_t *A, sopalin_data_t *sopalin_data)
Perform a sparse LDL^h factorization with 1D kernels.
parsec_taskpool_t * parsec_chetrf_sp1dplus_New(parsec_sparse_matrix_desc_t *A, sopalin_data_t *sopalin_data)
Generate the PaRSEC taskpool object for the LDL^h factorization with 1D kernels.
void parsec_chetrf_sp2d_Destruct(parsec_taskpool_t *taskpool)
Free the data structure associated to a taskpool created with parsec_chetrf_sp2d_New().
parsec_taskpool_t * parsec_chetrf_sp2d_New(parsec_sparse_matrix_desc_t *A, sopalin_data_t *sopalin_data)
Generate the PaRSEC taskpool object for the LDL^h factorization with 1D and 2D kernels.
int parsec_chetrf_sp2d(parsec_context_t *parsec, parsec_sparse_matrix_desc_t *A, sopalin_data_t *sopalin_data)
Perform a sparse LDL^h factorization with 1D and 2D kernels.
void parsec_chetrf(pastix_data_t *pastix_data, sopalin_data_t *sopalin_data)
Perform a sparse LDL^h factorization using PaRSEC runtime.
void parsec_chetrf_sp1dplus_Destruct(parsec_taskpool_t *taskpool)
Free the data structure associated to a taskpool created with parsec_chetrf_sp1dplus_New().
void parsec_sparse_matrix_init(SolverMatrix *solvmtx, int typesize, pastix_mtxtype_t mtxtype, int nodes, int myrank)
Generate the PaRSEC descriptor of the sparse matrix.
void pastix_parsec_init(pastix_data_t *pastix, int *argc, char **argv[], const int *bindtab)
Startup the PaRSEC runtime system.
PaRSEC descriptor stucture for the sparse matrix.
Main PaStiX data structure.