PaStiX Handbook
6.3.2
|
Modules | |
PaRSEC Cholesky factorization | |
PaRSEC LU factorization | |
PaRSEC LDL^t factorization | |
PaRSEC LDL^h factorization | |
PaRSEC extra LL^t factorization | |
Data Structures | |
struct | parsec_sparse_matrix_desc_s |
PaRSEC descriptor stucture for the sparse matrix. More... | |
Functions | |
static void | spm_data_key_to_value (parsec_data_key_t key, const SolverMatrix *solvmtx, int *uplo, pastix_int_t *cblknum, pastix_int_t *bloknum) |
Compute the triplet (uplo, cblknum, bloknum) from the key. More... | |
static uint32_t | parsec_sparse_matrix_data_key (parsec_data_collection_t *mat,...) |
Compute the unique key from the triplet (uplo, cblknum, bloknum). More... | |
static uint32_t | parsec_sparse_matrix_rank_of (parsec_data_collection_t *mat,...) |
Return the rank of the owner of the piece of data (uplo, cblknum, bloknum). More... | |
static uint32_t | parsec_sparse_matrix_rank_of_key (parsec_data_collection_t *mat, parsec_data_key_t key) |
Return the rank of the owner of the piece of data (key) More... | |
static int32_t | parsec_sparse_matrix_vpid_of (parsec_data_collection_t *mat,...) |
Return the rank of the virtual process owner of the piece of data (uplo, cblknum, bloknum). More... | |
static int32_t | parsec_sparse_matrix_vpid_of_key (parsec_data_collection_t *mat, parsec_data_key_t key) |
Return the rank of the virtual process owner of the piece of data (key) More... | |
static parsec_data_t * | parsec_sparse_matrix_data_of (parsec_data_collection_t *mat,...) |
Return the data handler associated to the piece of data (uplo, cblknum, bloknum). More... | |
static parsec_data_t * | parsec_sparse_matrix_data_of_key (parsec_data_collection_t *mat, parsec_data_key_t key) |
Return the data handler associated to the piece of data (key). More... | |
static void | pastix_parsec_register_cblk_lr (parsec_data_collection_t *o, parsec_data_t **handler, pastix_int_t id, const SolverCblk *cblk, int side) |
TODO. More... | |
static void | pastix_parsec_register_cblk_fr (parsec_data_collection_t *o, parsec_data_t **handler, pastix_int_t id, const parsec_sparse_matrix_desc_t *spmtx, const SolverCblk *cblk, int side) |
TODO. More... | |
static void | pastix_parsec_register_cblk (parsec_data_collection_t *o, pastix_int_t cblknum, const parsec_sparse_matrix_desc_t *spmtx, const SolverCblk *cblk) |
TODO. More... | |
PaRSEC sparse matrix descriptor | |
typedef struct parsec_sparse_matrix_desc_s | parsec_sparse_matrix_desc_t |
PaRSEC descriptor stucture for the sparse matrix. | |
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. More... | |
void | parsec_sparse_matrix_destroy (parsec_sparse_matrix_desc_t *spmtx) |
Free the PaRSEC descriptor of the sparse matrix. More... | |
PaRSEC control function | |
void | pastix_parsec_init (pastix_data_t *pastix, int *argc, char **argv[], const int *bindtab) |
Startup the PaRSEC runtime system. More... | |
void | pastix_parsec_finalize (pastix_data_t *pastix) |
Finalize the PaRSEC runtime system. More... | |
This module describes the functionnality provided by the runtime system PaRSEC for the numerical factorization and solve.
struct parsec_sparse_matrix_desc_s |
PaRSEC descriptor stucture for the sparse matrix.
Definition at line 35 of file pastix_parsec.h.
Data Fields | ||
---|---|---|
parsec_data_collection_t | super |
Every PaRSEC descriptors must inherit from parsec_desc_t |
int | typesze |
Arithmetic size |
pastix_mtxtype_t | mtxtype |
Matrix structure: PastixGeneral, PastixSymmetric or PastixHermitian. |
SolverMatrix * | solvmtx |
Solver matrix structure that describes the problem and stores the original data |
void ** | gpu_blocktab |
Pointer to GPU arrays that contains frownum,lrownum of each block for Fermi |
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.
This function creates the PaRSEC descriptor that will provide the data mapping and memory location to PaRSEC for the computation.
[in,out] | solvmtx | The solver matrix structure that describes the sparse matrix for PaStiX. |
[in] | typesize | The memory size of the arithmetic used to store the matrix coefficients. |
[in] | mtxtype | The type of sparse matrix to describe.
|
[in] | nodes | The number of processes used to solve the problem. |
[in] | myrank | The rank of the calling process. |
Definition at line 694 of file parsec_sparse_matrix.c.
References blok_rownbr(), cblk_colnbr(), solver_matrix_s::cblkmaxblk, solver_matrix_s::cblkmin2d, solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::cblktype, solver_blok_s::coefind, solver_cblk_s::fblokptr, solver_blok_s::fcblknm, solver_blok_s::handler, solver_cblk_s::lcoeftab, solver_blok_s::LRblock, parsec_sparse_matrix_desc_s::mtxtype, solver_cblk_s::ownerid, parsec_sparse_matrix_data_key(), parsec_sparse_matrix_data_of(), parsec_sparse_matrix_data_of_key(), parsec_sparse_matrix_destroy(), parsec_sparse_matrix_rank_of(), parsec_sparse_matrix_rank_of_key(), parsec_sparse_matrix_vpid_of(), parsec_sparse_matrix_vpid_of_key(), pastix_int_t, pastix_parsec_register_cblk(), PastixGeneral, parsec_sparse_matrix_desc_s::solvmtx, parsec_sparse_matrix_desc_s::super, parsec_sparse_matrix_desc_s::typesze, and solver_cblk_s::ucoeftab.
Referenced by parsec_cgetrf(), parsec_chetrf(), parsec_cpotrf(), parsec_cpxtrf(), parsec_csytrf(), parsec_dgetrf(), parsec_dpotrf(), parsec_dsytrf(), parsec_sgetrf(), parsec_spotrf(), parsec_ssytrf(), parsec_zgetrf(), parsec_zhetrf(), parsec_zpotrf(), parsec_zpxtrf(), parsec_zsytrf(), and pastix_subtask_bcsc2ctab().
void parsec_sparse_matrix_destroy | ( | parsec_sparse_matrix_desc_t * | spmtx | ) |
Free the PaRSEC descriptor of the sparse matrix.
This function destroys the PaRSEC descriptor, but do not free the matrix data that are managed by PaStiX.
[in,out] | spmtx | The descriptor to free. |
Definition at line 925 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblkmin2d, solver_matrix_s::cblknbr, solver_matrix_s::cblktab, solver_cblk_s::fblokptr, solver_blok_s::handler, solver_cblk_s::handler, parsec_sparse_matrix_desc_s::mtxtype, pastix_int_t, PastixGeneral, and parsec_sparse_matrix_desc_s::solvmtx.
Referenced by coeftabExit(), and parsec_sparse_matrix_init().
void pastix_parsec_init | ( | pastix_data_t * | pastix, |
int * | argc, | ||
char ** | argv[], | ||
const int * | bindtab | ||
) |
Startup the PaRSEC runtime system.
This function initialize and startup the PaRSEC runtime system with PaStix configuration variables
[in,out] | pastix | The main pastix_data structure. |
[in,out] | argc | The number of arguments of the main program. |
[in,out] | argv | The list of argument given to the main program. |
[in] | bindtab | The binding array of size the number of threads if a specific binding is required, NULL otherwise. |
Definition at line 61 of file parsec.c.
References IPARM_GPU_MEMORY_BLOCK_SIZE, IPARM_GPU_MEMORY_PERCENTAGE, IPARM_GPU_NBR, IPARM_THREAD_NBR, IPARM_VERBOSE, pastix(), and pastix_int_t.
Referenced by parsec_cgetrf(), parsec_chetrf(), parsec_cpotrf(), parsec_cpxtrf(), parsec_csytrf(), parsec_dgetrf(), parsec_dpotrf(), parsec_dsytrf(), parsec_sgetrf(), parsec_spotrf(), parsec_ssytrf(), parsec_zgetrf(), parsec_zhetrf(), parsec_zpotrf(), parsec_zpxtrf(), parsec_zsytrf(), pastix_subtask_bcsc2ctab(), and pastixInitWithAffinity().
void pastix_parsec_finalize | ( | pastix_data_t * | pastix | ) |
Finalize the PaRSEC runtime system.
This function stop the PaRSEC runtime system.
[in,out] | pastix | The main pastix_data structure. |
Definition at line 178 of file parsec.c.
References pastix().
Referenced by pastixFinalize().
|
inlinestatic |
Compute the triplet (uplo, cblknum, bloknum) from the key.
This function convert the unique key identifier of each piece of data, to its original information.
[in] | key | The key identifier to decode. |
[in] | solvmtx | The solver matrix structure to access information about the blocks and cblks. |
[out] | uplo | On exit, uplo is 0 if the key corresponds to the lower part, or 1 for the upper part. |
[out] | cblknum | On exit, the index of the cblk encoded in the key. |
[out] | bloknum | On exit, the index of the blok encoded in the key. bloknum = 0, if the piece of data is the full cblk for 1D kernels. bloknum > 0, if the piece of data is the (bloknum-1)^th block in the cblk. |
Definition at line 61 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblkmaxblk, solver_matrix_s::cblkmin2d, solver_matrix_s::cblknbr, and pastix_int_t.
Referenced by parsec_sparse_matrix_data_of_key(), and parsec_sparse_matrix_rank_of_key().
|
static |
Compute the unique key from the triplet (uplo, cblknum, bloknum).
This function convert the unique triplet in a unique key identifier for each piece of data.
[in] | mat | The sparse matrix descriptor. |
[in] | ... | This function must receive three int:
|
Definition at line 122 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblkmaxblk, solver_matrix_s::cblkmin2d, solver_matrix_s::cblknbr, pastix_int_t, and parsec_sparse_matrix_desc_s::solvmtx.
Referenced by parsec_sparse_matrix_init().
|
static |
Return the rank of the owner of the piece of data (uplo, cblknum, bloknum).
[in] | mat | The sparse matrix descriptor. |
[in] | ... | This function must receive three int:
|
Definition at line 178 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblktab, solver_cblk_s::ownerid, pastix_int_t, and parsec_sparse_matrix_desc_s::solvmtx.
Referenced by parsec_sparse_matrix_init().
|
static |
Return the rank of the owner of the piece of data (key)
[in] | mat | The sparse matrix descriptor. |
[in] | key | The unique key idenifier of a piece of data. |
Definition at line 219 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblktab, solver_cblk_s::ownerid, pastix_int_t, parsec_sparse_matrix_desc_s::solvmtx, and spm_data_key_to_value().
Referenced by parsec_sparse_matrix_init().
|
static |
Return the rank of the virtual process owner of the piece of data (uplo, cblknum, bloknum).
[in] | mat | The sparse matrix descriptor. |
[in] | ... | This function must receive three int:
|
Definition at line 260 of file parsec_sparse_matrix.c.
Referenced by parsec_sparse_matrix_init().
|
static |
Return the rank of the virtual process owner of the piece of data (key)
[in] | mat | The sparse matrix descriptor. |
[in] | key | The unique key idenifier of a piece of data. |
Definition at line 285 of file parsec_sparse_matrix.c.
Referenced by parsec_sparse_matrix_init().
|
static |
Return the data handler associated to the piece of data (uplo, cblknum, bloknum).
[in] | mat | The sparse matrix descriptor. |
[in] | ... | This function must receive three int:
|
Definition at line 316 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblktab, solver_cblk_s::fblokptr, solver_blok_s::handler, solver_cblk_s::handler, pastix_int_t, and parsec_sparse_matrix_desc_s::solvmtx.
Referenced by parsec_sparse_matrix_init().
|
static |
Return the data handler associated to the piece of data (key).
[in] | mat | The sparse matrix descriptor. |
[in] | key | The unique key idenifier of a piece of data. |
Definition at line 367 of file parsec_sparse_matrix.c.
References solver_matrix_s::cblktab, solver_cblk_s::fblokptr, solver_blok_s::handler, solver_cblk_s::handler, pastix_int_t, parsec_sparse_matrix_desc_s::solvmtx, and spm_data_key_to_value().
Referenced by parsec_sparse_matrix_init().
|
inlinestatic |
TODO.
[in] | o | TODO |
[in] | handler | TODO |
[in] | id | TODO |
[in] | cblk | TODO |
[in] | side | TODO |
Definition at line 565 of file parsec_sparse_matrix.c.
References solver_cblk_s::fblokptr, and solver_blok_s::LRblock.
Referenced by pastix_parsec_register_cblk().
|
inlinestatic |
TODO.
[in] | o | TODO |
[in] | handler | TODO |
[in] | id | TODO |
[in] | spmtx | TODO |
[in] | cblk | TODO |
[in] | side | TODO |
Definition at line 603 of file parsec_sparse_matrix.c.
References cblk_colnbr(), solver_cblk_s::lcoeftab, PastixUCoef, solver_cblk_s::stride, parsec_sparse_matrix_desc_s::typesze, and solver_cblk_s::ucoeftab.
Referenced by pastix_parsec_register_cblk().
|
inlinestatic |
TODO.
[in] | o | TODO |
[in] | cblknum | TODO |
[in] | spmtx | TODO |
[in] | cblk | TODO |
Definition at line 636 of file parsec_sparse_matrix.c.
References solver_cblk_s::cblktype, solver_cblk_s::handler, parsec_sparse_matrix_desc_s::mtxtype, pastix_parsec_register_cblk_fr(), pastix_parsec_register_cblk_lr(), PastixGeneral, PastixLCoef, and PastixUCoef.
Referenced by parsec_sparse_matrix_init().