PaStiX Handbook 6.4.0
|
#include "pastix/config.h"
#include <spm.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <assert.h>
#include <math.h>
#include "pastix/api.h"
#include "pastix/datatypes.h"
#include "pastix/order.h"
Go to the source code of this file.
Functions | |
BEGIN_C_DECLS int | pastix (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *rowptr, void *values, pastix_int_t *perm, pastix_int_t *invp, void *B, pastix_int_t nrhs, pastix_int_t *iparm, double *dparm) |
Main function for compatibility with former releases. | |
void | pastixInitParam (pastix_int_t *iparm, double *dparm) |
Initialize the iparm and dparm arrays to their default values. | |
void | pastixInit (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t *iparm, double *dparm) |
Initialize the solver instance. | |
void | pastixInitWithAffinity (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t *iparm, double *dparm, const int *bindtab) |
Initialize the solver instance with a bintab array to specify the thread binding. | |
void | pastixFinalize (pastix_data_t **pastix_data) |
Finalize the solver instance. | |
int | pastix_task_analyze (pastix_data_t *pastix_data, const spmatrix_t *spm) |
Perform all the preprocessing steps: ordering, symbolic factorization, reordering, proportionnal mapping, ... | |
int | pastix_task_numfact (pastix_data_t *pastix_data, spmatrix_t *spm) |
Perform all the numerical factorization steps: fill the internal block CSC and the solver matrix structures, then apply the factorization step. | |
int | pastix_task_solve (pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t nrhs, void *B, pastix_int_t ldb) |
Solve the given problem. | |
int | pastix_task_refine (pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t nrhs, void *B, pastix_int_t ldb, void *X, pastix_int_t ldx) |
Perform iterative refinement. | |
int | pastix_task_solve_and_refine (pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t nrhs, void *B, pastix_int_t ldb, void *X, pastix_int_t ldx) |
Performs solve and iterative refinement without unnecessary permutations. | |
int | pastix_subtask_order (pastix_data_t *pastix_data, const spmatrix_t *spm, pastix_order_t *myorder) |
Computes the ordering of the given graph in parameters. | |
int | pastix_subtask_symbfact (pastix_data_t *pastix_data) |
Computes the symbolic factorization step. | |
int | pastix_subtask_reordering (pastix_data_t *pastix_data) |
Apply the reordering step to compact off-diagonal blocks. | |
int | pastix_subtask_blend (pastix_data_t *pastix_data) |
Compute the proportional mapping and the final solver structure. | |
int | pastix_subtask_spm2bcsc (pastix_data_t *pastix_data, spmatrix_t *spm) |
Fill the internal block CSC structure. | |
int | pastix_subtask_bcsc2ctab (pastix_data_t *pastix_data) |
Fill the internal solver matrix structure. | |
int | pastix_subtask_sopalin (pastix_data_t *pastix_data) |
Factorize the given problem using Cholesky or LU decomposition. | |
int | pastix_subtask_applyorder (pastix_data_t *pastix_data, pastix_dir_t dir, pastix_int_t m, pastix_int_t n, void *B, pastix_int_t ldb, pastix_rhs_t Bp) |
Apply a permutation on the right-and-side vector before the solve step. | |
int | pastix_subtask_trsm (pastix_data_t *pastix_data, pastix_side_t side, pastix_uplo_t uplo, pastix_trans_t trans, pastix_diag_t diag, pastix_rhs_t b) |
Apply a triangular solve on the right-and-side vectors. | |
int | pastix_subtask_diag (pastix_data_t *pastix_data, pastix_rhs_t b) |
Apply a diagonal operation on the right-and-side vectors. | |
int | pastix_subtask_solve (pastix_data_t *pastix_data, pastix_rhs_t b) |
Solve the given problem without applying the permutation. | |
int | pastix_subtask_refine (pastix_data_t *pastix_data, pastix_rhs_t b, pastix_rhs_t x) |
Perform the iterative refinement without apply the permutations. | |
int | pastix_subtask_solve_adv (pastix_data_t *pastix_data, pastix_trans_t transA, pastix_rhs_t b) |
Solve the given problem without applying the permutation. | |
void | pastixIsolateUnknowns (pastix_data_t *pastix_data, pastix_int_t n, const pastix_int_t *list) |
Set a list of unknowns that needs to be isolated and pushed at the end of the ordering before the Schur unknowns if any. | |
void | pastixSetSchurUnknownList (pastix_data_t *pastix_data, pastix_int_t n, const pastix_int_t *list) |
Set the list of unknowns that belongs to the schur complement. | |
int | pastixGetSchur (const pastix_data_t *pastix_data, void *S, pastix_int_t lds) |
Return the Schur complement. | |
int | pastixRhsInit (pastix_rhs_t *rhs) |
Initialize an RHS data structure. | |
int | pastixRhsFinalize (pastix_rhs_t rhs) |
Cleanup an RHS data structure. | |
int | pastixRhsDoubletoSingle (const pastix_rhs_t dB, pastix_rhs_t sB) |
Reduces the precision of an RHS. | |
int | pastixRhsSingleToDouble (const pastix_rhs_t sB, pastix_rhs_t dB) |
Increases the precision of an RHS. | |
int | pastixRhsSchurGet (const pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, pastix_rhs_t rhsB, void *B, pastix_int_t ldb) |
Get the vector in an RHS data structure. | |
int | pastixRhsSchurSet (const pastix_data_t *pastix_data, pastix_int_t m, pastix_int_t n, void *B, pastix_int_t ldb, pastix_rhs_t rhsB) |
Set the vector in an RHS data structure. | |
void | pastixExpand (const pastix_data_t *pastix_data, spmatrix_t *spm) |
Expand an spm structure and the already computed data structure associated if any. | |
int | pastixGetDiag (const pastix_data_t *pastix_data, void *x, pastix_int_t incx) |
Return the diagonal of the matrix. | |
void | pastixGetOptions (int argc, char **argv, pastix_int_t *iparm, double *dparm, int *check, int *scatter, spm_driver_t *driver, char **filename) |
PaStiX helper function to read command line options in examples. | |
void | pastixDumpParam (const pastix_data_t *pastix_data) |
Dump the iparm and dparm parameters in a CSV file. | |
int | pastixCheckParam (const pastix_int_t *iparm, const double *dparm) |
Check the values of iparm and dparm arrays. | |
int | pastixBlasGetNumThreads (void) |
Return the current number of threads used for blas calls. | |
int | pastixBlasSetNumThreads (int nt) |
Set the number of threads for blas calls (BLIS, MKL, OpenBLAS) and return the previous number of blas threads. | |
int | pastixBlasSetNumThreadsOne (void) |
Set the number of threads for blas calls (BLIS, MKL, OpenBLAS) to 1 and return the previous number of blas threads. | |
PaStiX main header file.
Definition in file pastix.h.
void pastixExpand | ( | const pastix_data_t * | pastix_data, |
spmatrix_t * | spm | ||
) |
Expand an spm structure and the already computed data structure associated if any.
[in] | pastix_data | The pastix context in which the spm is used |
[in] | spm | The multi-dof sparse matrix to expand into a single dof sparse matrix. On exit, spm contains the expanded matrix. The compressed form of the matrix is destroyed. |
Definition at line 510 of file pastix.c.
References pastix_data_s::ordemesh, pastixOrderCheck(), pastixOrderExpand(), pastixSymbolExpand(), pastix_data_s::steps, and pastix_data_s::symbmtx.