PaStiX Handbook
6.2.1
|
Typedefs | |
typedef void(* | coeftab_fct_memory_t) (SolverMatrix *, pastix_fixdbl_t *) |
Type of the memory gain functions. | |
Functions | |
void | coeftabInit (pastix_data_t *pastix_data, pastix_coefside_t side) |
Initialize the solver matrix structure. More... | |
void | coeftabExit (SolverMatrix *solvmtx) |
Free the solver matrix structure. More... | |
pastix_int_t | coeftabCompress (pastix_data_t *pastix_data) |
Compress the factorized matrix structure if not already done. More... | |
Variables | |
coeftab_fct_memory_t | coeftabMemory [4] |
List of functions to compute the memory gain in low-rank per precision. | |
PastixFloat compression/uncompression routines | |
pastix_int_t | coeftab_scompress (SolverMatrix *solvmtx) |
Compress all the cblks marked as valid for low-rank format. More... | |
void | coeftab_suncompress (SolverMatrix *solvmtx) |
Uncompress all column block in low-rank format into full-rank format. More... | |
void | coeftab_smemory (SolverMatrix *solvmtx, pastix_fixdbl_t *dparm) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix. More... | |
PastixFloat Extraction routines | |
void | coeftab_sgetschur (const SolverMatrix *solvmtx, float *S, pastix_int_t lds) |
Extract the Schur complement. More... | |
void | coeftab_sgetdiag (const SolverMatrix *solvmtx, float *D, pastix_int_t incD) |
Extract the diagonal. More... | |
PastixFloat debug routines | |
void | coeftab_sdump (pastix_data_t *pastix_data, const SolverMatrix *solvmtx, const char *filename) |
Dump the solver matrix coefficients into a file in human readable format. More... | |
int | coeftab_sdiff (pastix_coefside_t side, const SolverMatrix *solvA, SolverMatrix *solvB) |
Compare two solver matrices in full-rank format with the same data distribution. More... | |
PastixComplex64 compression/uncompression routines | |
pastix_int_t | coeftab_zcompress (SolverMatrix *solvmtx) |
Compress all the cblks marked as valid for low-rank format. More... | |
void | coeftab_zuncompress (SolverMatrix *solvmtx) |
Uncompress all column block in low-rank format into full-rank format. More... | |
void | coeftab_zmemory (SolverMatrix *solvmtx, pastix_fixdbl_t *dparm) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix. More... | |
PastixComplex64 Extraction routines | |
void | coeftab_zgetschur (const SolverMatrix *solvmtx, pastix_complex64_t *S, pastix_int_t lds) |
Extract the Schur complement. More... | |
void | coeftab_zgetdiag (const SolverMatrix *solvmtx, pastix_complex64_t *D, pastix_int_t incD) |
Extract the diagonal. More... | |
PastixComplex64 debug routines | |
void | coeftab_zdump (pastix_data_t *pastix_data, const SolverMatrix *solvmtx, const char *filename) |
Dump the solver matrix coefficients into a file in human readable format. More... | |
int | coeftab_zdiff (pastix_coefside_t side, const SolverMatrix *solvA, SolverMatrix *solvB) |
Compare two solver matrices in full-rank format with the same data distribution. More... | |
PastixDouble compression/uncompression routines | |
pastix_int_t | coeftab_dcompress (SolverMatrix *solvmtx) |
Compress all the cblks marked as valid for low-rank format. More... | |
void | coeftab_duncompress (SolverMatrix *solvmtx) |
Uncompress all column block in low-rank format into full-rank format. More... | |
void | coeftab_dmemory (SolverMatrix *solvmtx, pastix_fixdbl_t *dparm) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix. More... | |
PastixDouble Extraction routines | |
void | coeftab_dgetschur (const SolverMatrix *solvmtx, double *S, pastix_int_t lds) |
Extract the Schur complement. More... | |
void | coeftab_dgetdiag (const SolverMatrix *solvmtx, double *D, pastix_int_t incD) |
Extract the diagonal. More... | |
PastixDouble debug routines | |
void | coeftab_ddump (pastix_data_t *pastix_data, const SolverMatrix *solvmtx, const char *filename) |
Dump the solver matrix coefficients into a file in human readable format. More... | |
int | coeftab_ddiff (pastix_coefside_t side, const SolverMatrix *solvA, SolverMatrix *solvB) |
Compare two solver matrices in full-rank format with the same data distribution. More... | |
PastixComplex32 compression/uncompression routines | |
pastix_int_t | coeftab_ccompress (SolverMatrix *solvmtx) |
Compress all the cblks marked as valid for low-rank format. More... | |
void | coeftab_cuncompress (SolverMatrix *solvmtx) |
Uncompress all column block in low-rank format into full-rank format. More... | |
void | coeftab_cmemory (SolverMatrix *solvmtx, pastix_fixdbl_t *dparm) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix. More... | |
PastixComplex32 Extraction routines | |
void | coeftab_cgetschur (const SolverMatrix *solvmtx, pastix_complex32_t *S, pastix_int_t lds) |
Extract the Schur complement. More... | |
void | coeftab_cgetdiag (const SolverMatrix *solvmtx, pastix_complex32_t *D, pastix_int_t incD) |
Extract the diagonal. More... | |
PastixComplex32 debug routines | |
void | coeftab_cdump (pastix_data_t *pastix_data, const SolverMatrix *solvmtx, const char *filename) |
Dump the solver matrix coefficients into a file in human readable format. More... | |
int | coeftab_cdiff (pastix_coefside_t side, const SolverMatrix *solvA, SolverMatrix *solvB) |
Compare two solver matrices in full-rank format with the same data distribution. More... | |
This group collects all the functions that operate on the full matrix and which are not factorization/solve routines.
void coeftabInit | ( | pastix_data_t * | pastix_data, |
pastix_coefside_t | side | ||
) |
Initialize the solver matrix structure.
This routine is a parallel routine to initialize the solver matrix structure through the internal static scheduler
[in,out] | pastix_data | The pastix_data structure that hold the solver matrix to initialize. |
[in] | side | Describe the side(s) of the matrix that must be initialized.
|
Definition at line 138 of file coeftab.c.
References solver_cblk_s::brownum, solver_cblk_s::ctrbcnt, solver_blok_s::iluklvl, pastix_gendirectories(), and pcoeftabInit().
void coeftabExit | ( | SolverMatrix * | solvmtx | ) |
Free the solver matrix structure.
This routine free all data structure refereing to the solver matrix L, even the runtime descriptors if present.
[in,out] | solvmtx | The solver matrix structure of the problem. |
Definition at line 185 of file coeftab.c.
References solver_cblk_s::cblktype, parsec_sparse_matrix_destroy(), and starpu_sparse_matrix_destroy().
Referenced by solverExit().
pastix_int_t coeftabCompress | ( | pastix_data_t * | pastix_data | ) |
Compress the factorized matrix structure if not already done.
This routine compress all column blocks that are marked for compression, and return the amount of memory saved by the compression.
[in,out] | pastix_data | The pastix_data structure that holds the problem |
Definition at line 320 of file coeftab.c.
References DPARM_COMPRESS_TOLERANCE, IPARM_COMPRESS_METHOD, IPARM_COMPRESS_MIN_HEIGHT, IPARM_COMPRESS_MIN_WIDTH, and pcoeftabComp().
pastix_int_t coeftab_scompress | ( | SolverMatrix * | solvmtx | ) |
Compress all the cblks marked as valid for low-rank format.
All the cblk in the top levels of the elimination tree marked as candidates for compression are compressed if there is a gain to compress them. The compression to low-rank format is parameterized by the input information stored in the lowrank structure. On exit, all the cblks marked for compression are stored through the low-rank structure, even if they are kept in their full-rank form.
[in,out] | solvmtx | The solver matrix of the problem to compress. |
Definition at line 174 of file coeftab_s.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_suncompress | ( | SolverMatrix * | solvmtx | ) |
Uncompress all column block in low-rank format into full-rank format.
[in,out] | solvmtx | The solver matrix of the problem. |
Definition at line 203 of file coeftab_s.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_smemory | ( | SolverMatrix * | solvmtx, |
pastix_fixdbl_t * | dparm | ||
) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix.
This function returns the memory gain in bytes for the full matrix when column blocks are stored in low-rank format compared to a full rank storage.
[in] | solvmtx | The solver matrix of the problem. |
[in,out] | dparm | The float parameter array which is going to be updated. |
Definition at line 235 of file coeftab_s.c.
References PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_sgetschur | ( | const SolverMatrix * | solvmtx, |
float * | S, | ||
pastix_int_t | lds | ||
) |
Extract the Schur complement.
This routine is sequential and returns the full Schur complement uncommpressed in Lapack format.
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | S | The pointer to the allocated matrix array that will store the Schur complement. |
[in] | lds | The leading dimension of the S array. |
Definition at line 435 of file coeftab_s.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and PastixFactLU.
void coeftab_sgetdiag | ( | const SolverMatrix * | solvmtx, |
float * | D, | ||
pastix_int_t | incD | ||
) |
Extract the diagonal.
This routine is sequential and returns the full diagonal in the vector D, such that: D[incD*i]= A(i, i)
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | D | The pointer to the allocated vector array that will store the diagonal. D must be of size solvmtx->nodenbr * incD. |
[in] | incD | The increment bewteen two elements of D. incD > 0. |
Definition at line 484 of file coeftab_s.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void coeftab_sdump | ( | pastix_data_t * | pastix_data, |
const SolverMatrix * | solvmtx, | ||
const char * | prefix | ||
) |
Dump the solver matrix coefficients into a file in human readable format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in,out] | pastix_data | The pastix_data instance to access the unique directory id in which output the files. |
[in] | solvmtx | The solver matrix to print. |
[in] | filename | The filename where to store the output matrix. |
Definition at line 52 of file coeftab_s.c.
References solver_cblk_s::cblktype, and pastix_gendirectories().
int coeftab_sdiff | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvA, | ||
SolverMatrix * | solvB | ||
) |
Compare two solver matrices in full-rank format with the same data distribution.
The second solver matrix is overwritten by the difference of the two matrices. The frobenius norm of the difference of each column block is computed and the functions returns 0 if the result for all the column blocks of: || B_k - A_k || / ( || A_k || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | solvA | The solver matrix A. |
[in,out] | solvB | The solver matrix B. On exit, B coefficient arrays are overwritten by the result of (B-A). |
Definition at line 127 of file coeftab_s.c.
References cpucblk_sdiff().
pastix_int_t coeftab_zcompress | ( | SolverMatrix * | solvmtx | ) |
Compress all the cblks marked as valid for low-rank format.
All the cblk in the top levels of the elimination tree marked as candidates for compression are compressed if there is a gain to compress them. The compression to low-rank format is parameterized by the input information stored in the lowrank structure. On exit, all the cblks marked for compression are stored through the low-rank structure, even if they are kept in their full-rank form.
[in,out] | solvmtx | The solver matrix of the problem to compress. |
Definition at line 174 of file coeftab_z.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_zuncompress | ( | SolverMatrix * | solvmtx | ) |
Uncompress all column block in low-rank format into full-rank format.
[in,out] | solvmtx | The solver matrix of the problem. |
Definition at line 203 of file coeftab_z.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_zmemory | ( | SolverMatrix * | solvmtx, |
pastix_fixdbl_t * | dparm | ||
) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix.
This function returns the memory gain in bytes for the full matrix when column blocks are stored in low-rank format compared to a full rank storage.
[in] | solvmtx | The solver matrix of the problem. |
[in,out] | dparm | The double parameter array which is going to be updated. |
Definition at line 235 of file coeftab_z.c.
References PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_zgetschur | ( | const SolverMatrix * | solvmtx, |
pastix_complex64_t * | S, | ||
pastix_int_t | lds | ||
) |
Extract the Schur complement.
This routine is sequential and returns the full Schur complement uncommpressed in Lapack format.
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | S | The pointer to the allocated matrix array that will store the Schur complement. |
[in] | lds | The leading dimension of the S array. |
Definition at line 435 of file coeftab_z.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and PastixFactLU.
void coeftab_zgetdiag | ( | const SolverMatrix * | solvmtx, |
pastix_complex64_t * | D, | ||
pastix_int_t | incD | ||
) |
Extract the diagonal.
This routine is sequential and returns the full diagonal in the vector D, such that: D[incD*i]= A(i, i)
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | D | The pointer to the allocated vector array that will store the diagonal. D must be of size solvmtx->nodenbr * incD. |
[in] | incD | The increment bewteen two elements of D. incD > 0. |
Definition at line 484 of file coeftab_z.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void coeftab_zdump | ( | pastix_data_t * | pastix_data, |
const SolverMatrix * | solvmtx, | ||
const char * | prefix | ||
) |
Dump the solver matrix coefficients into a file in human readable format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in,out] | pastix_data | The pastix_data instance to access the unique directory id in which output the files. |
[in] | solvmtx | The solver matrix to print. |
[in] | filename | The filename where to store the output matrix. |
Definition at line 52 of file coeftab_z.c.
References solver_cblk_s::cblktype, and pastix_gendirectories().
int coeftab_zdiff | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvA, | ||
SolverMatrix * | solvB | ||
) |
Compare two solver matrices in full-rank format with the same data distribution.
The second solver matrix is overwritten by the difference of the two matrices. The frobenius norm of the difference of each column block is computed and the functions returns 0 if the result for all the column blocks of: || B_k - A_k || / ( || A_k || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | solvA | The solver matrix A. |
[in,out] | solvB | The solver matrix B. On exit, B coefficient arrays are overwritten by the result of (B-A). |
Definition at line 127 of file coeftab_z.c.
References cpucblk_zdiff().
pastix_int_t coeftab_dcompress | ( | SolverMatrix * | solvmtx | ) |
Compress all the cblks marked as valid for low-rank format.
All the cblk in the top levels of the elimination tree marked as candidates for compression are compressed if there is a gain to compress them. The compression to low-rank format is parameterized by the input information stored in the lowrank structure. On exit, all the cblks marked for compression are stored through the low-rank structure, even if they are kept in their full-rank form.
[in,out] | solvmtx | The solver matrix of the problem to compress. |
Definition at line 174 of file coeftab_d.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_duncompress | ( | SolverMatrix * | solvmtx | ) |
Uncompress all column block in low-rank format into full-rank format.
[in,out] | solvmtx | The solver matrix of the problem. |
Definition at line 203 of file coeftab_d.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_dmemory | ( | SolverMatrix * | solvmtx, |
pastix_fixdbl_t * | dparm | ||
) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix.
This function returns the memory gain in bytes for the full matrix when column blocks are stored in low-rank format compared to a full rank storage.
[in] | solvmtx | The solver matrix of the problem. |
[in,out] | dparm | The double parameter array which is going to be updated. |
Definition at line 235 of file coeftab_d.c.
References PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_dgetschur | ( | const SolverMatrix * | solvmtx, |
double * | S, | ||
pastix_int_t | lds | ||
) |
Extract the Schur complement.
This routine is sequential and returns the full Schur complement uncommpressed in Lapack format.
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | S | The pointer to the allocated matrix array that will store the Schur complement. |
[in] | lds | The leading dimension of the S array. |
Definition at line 435 of file coeftab_d.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and PastixFactLU.
void coeftab_dgetdiag | ( | const SolverMatrix * | solvmtx, |
double * | D, | ||
pastix_int_t | incD | ||
) |
Extract the diagonal.
This routine is sequential and returns the full diagonal in the vector D, such that: D[incD*i]= A(i, i)
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | D | The pointer to the allocated vector array that will store the diagonal. D must be of size solvmtx->nodenbr * incD. |
[in] | incD | The increment bewteen two elements of D. incD > 0. |
Definition at line 484 of file coeftab_d.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void coeftab_ddump | ( | pastix_data_t * | pastix_data, |
const SolverMatrix * | solvmtx, | ||
const char * | prefix | ||
) |
Dump the solver matrix coefficients into a file in human readable format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in,out] | pastix_data | The pastix_data instance to access the unique directory id in which output the files. |
[in] | solvmtx | The solver matrix to print. |
[in] | filename | The filename where to store the output matrix. |
Definition at line 52 of file coeftab_d.c.
References solver_cblk_s::cblktype, and pastix_gendirectories().
int coeftab_ddiff | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvA, | ||
SolverMatrix * | solvB | ||
) |
Compare two solver matrices in full-rank format with the same data distribution.
The second solver matrix is overwritten by the difference of the two matrices. The frobenius norm of the difference of each column block is computed and the functions returns 0 if the result for all the column blocks of: || B_k - A_k || / ( || A_k || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | solvA | The solver matrix A. |
[in,out] | solvB | The solver matrix B. On exit, B coefficient arrays are overwritten by the result of (B-A). |
Definition at line 127 of file coeftab_d.c.
References cpucblk_ddiff().
pastix_int_t coeftab_ccompress | ( | SolverMatrix * | solvmtx | ) |
Compress all the cblks marked as valid for low-rank format.
All the cblk in the top levels of the elimination tree marked as candidates for compression are compressed if there is a gain to compress them. The compression to low-rank format is parameterized by the input information stored in the lowrank structure. On exit, all the cblks marked for compression are stored through the low-rank structure, even if they are kept in their full-rank form.
[in,out] | solvmtx | The solver matrix of the problem to compress. |
Definition at line 174 of file coeftab_c.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_cuncompress | ( | SolverMatrix * | solvmtx | ) |
Uncompress all column block in low-rank format into full-rank format.
[in,out] | solvmtx | The solver matrix of the problem. |
Definition at line 203 of file coeftab_c.c.
References solver_cblk_s::cblktype, PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_cmemory | ( | SolverMatrix * | solvmtx, |
pastix_fixdbl_t * | dparm | ||
) |
Compute the memory gain of the low-rank form over the full-rank form for the entire matrix.
This function returns the memory gain in bytes for the full matrix when column blocks are stored in low-rank format compared to a full rank storage.
[in] | solvmtx | The solver matrix of the problem. |
[in,out] | dparm | The float parameter array which is going to be updated. |
Definition at line 235 of file coeftab_c.c.
References PastixFactLU, PastixLCoef, and PastixLUCoef.
void coeftab_cgetschur | ( | const SolverMatrix * | solvmtx, |
pastix_complex32_t * | S, | ||
pastix_int_t | lds | ||
) |
Extract the Schur complement.
This routine is sequential and returns the full Schur complement uncommpressed in Lapack format.
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | S | The pointer to the allocated matrix array that will store the Schur complement. |
[in] | lds | The leading dimension of the S array. |
Definition at line 435 of file coeftab_c.c.
References solver_cblk_s::cblktype, solver_cblk_s::fcolnum, and PastixFactLU.
void coeftab_cgetdiag | ( | const SolverMatrix * | solvmtx, |
pastix_complex32_t * | D, | ||
pastix_int_t | incD | ||
) |
Extract the diagonal.
This routine is sequential and returns the full diagonal in the vector D, such that: D[incD*i]= A(i, i)
[in] | solvmtx | The solver matrix structure describing the problem. |
[in,out] | D | The pointer to the allocated vector array that will store the diagonal. D must be of size solvmtx->nodenbr * incD. |
[in] | incD | The increment bewteen two elements of D. incD > 0. |
Definition at line 484 of file coeftab_c.c.
References cblk_colnbr(), and solver_cblk_s::cblktype.
void coeftab_cdump | ( | pastix_data_t * | pastix_data, |
const SolverMatrix * | solvmtx, | ||
const char * | prefix | ||
) |
Dump the solver matrix coefficients into a file in human readable format.
All non-zeroes coefficients are dumped in the format: i j val with one value per row.
[in,out] | pastix_data | The pastix_data instance to access the unique directory id in which output the files. |
[in] | solvmtx | The solver matrix to print. |
[in] | filename | The filename where to store the output matrix. |
Definition at line 52 of file coeftab_c.c.
References solver_cblk_s::cblktype, and pastix_gendirectories().
int coeftab_cdiff | ( | pastix_coefside_t | side, |
const SolverMatrix * | solvA, | ||
SolverMatrix * | solvB | ||
) |
Compare two solver matrices in full-rank format with the same data distribution.
The second solver matrix is overwritten by the difference of the two matrices. The frobenius norm of the difference of each column block is computed and the functions returns 0 if the result for all the column blocks of: || B_k - A_k || / ( || A_k || * eps )
is below 10. Otherwise, an error message is printed and 1 is returned.
[in] | side | Define which side of the cblk must be tested.
|
[in] | solvA | The solver matrix A. |
[in,out] | solvB | The solver matrix B. On exit, B coefficient arrays are overwritten by the result of (B-A). |
Definition at line 127 of file coeftab_c.c.
References cpucblk_cdiff().