PaStiX Handbook  6.2.1
Parameters

This group describes parameters and constants to control the solver. More...

Typedefs

typedef BEGIN_C_DECLS enum pastix_iparm_e pastix_iparm_t
 Integer parameters.
 
typedef enum pastix_dparm_e pastix_dparm_t
 Float parameters.
 
typedef enum pastix_task_e pastix_task_t
 Main steps for the pastix() interface. More...
 
typedef enum pastix_trace_e pastix_trace_t
 Steps to trace.
 
typedef enum pastix_verbose_e pastix_verbose_t
 Verbose modes.
 
typedef enum pastix_io_e pastix_io_t
 IO strategy for graph and ordering.
 
typedef enum pastix_fact_mode_e pastix_fact_mode_t
 Factorization Schur modes. More...
 
typedef enum pastix_solv_mode_e pastix_solv_mode_t
 Solve Schur modes. More...
 
typedef enum pastix_refine_e pastix_refine_t
 Iterative refinement algorithms.
 
typedef enum pastix_factotype_e pastix_factotype_t
 Factorization algorithms available for IPARM_FACTORIZATION parameter.
 
typedef enum pastix_scheduler_e pastix_scheduler_t
 Scheduler.
 
typedef enum pastix_ordering_e pastix_ordering_t
 Ordering strategy.
 
typedef enum pastix_mpithreadmode_e pastix_mpithreadmode_t
 MPI thread mode.
 
typedef enum pastix_error_e pastix_error_t
 Error codes.
 
typedef enum pastix_compress_when_e pastix_compress_when_t
 Compression strategy available for IPARM_COMPRESS_WHEN parameter.
 
typedef enum pastix_compress_method_e pastix_compress_method_t
 Compression method available for IPARM_COMPRESS_METHOD parameter.
 
typedef enum pastix_compress_ortho_e pastix_compress_ortho_t
 Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter.
 
typedef enum pastix_split_e pastix_split_t
 Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter.
 

Enumerations

enum  pastix_iparm_e {
  IPARM_VERBOSE, IPARM_IO_STRATEGY, IPARM_NNZEROS, IPARM_NNZEROS_BLOCK_LOCAL,
  IPARM_ALLOCATED_TERMS, IPARM_PRODUCE_STATS, IPARM_TRACE, IPARM_MC64,
  IPARM_ORDERING, IPARM_ORDERING_DEFAULT, IPARM_SCOTCH_MT, IPARM_SCOTCH_SWITCH_LEVEL,
  IPARM_SCOTCH_CMIN, IPARM_SCOTCH_CMAX, IPARM_SCOTCH_FRAT, IPARM_METIS_CTYPE,
  IPARM_METIS_RTYPE, IPARM_METIS_NO2HOP, IPARM_METIS_NSEPS, IPARM_METIS_NITER,
  IPARM_METIS_UFACTOR, IPARM_METIS_COMPRESS, IPARM_METIS_CCORDER, IPARM_METIS_PFACTOR,
  IPARM_METIS_SEED, IPARM_METIS_DBGLVL, IPARM_AMALGAMATION_LVLBLAS, IPARM_AMALGAMATION_LVLCBLK,
  IPARM_REORDERING_SPLIT, IPARM_REORDERING_STOP, IPARM_SPLITTING_STRATEGY, IPARM_SPLITTING_LEVELS_PROJECTIONS,
  IPARM_SPLITTING_LEVELS_KWAY, IPARM_SPLITTING_PROJECTIONS_DEPTH, IPARM_SPLITTING_PROJECTIONS_DISTANCE, IPARM_SPLITTING_PROJECTIONS_WIDTH,
  IPARM_MIN_BLOCKSIZE, IPARM_MAX_BLOCKSIZE, IPARM_TASKS2D_LEVEL, IPARM_TASKS2D_WIDTH,
  IPARM_ALLCAND, IPARM_INCOMPLETE, IPARM_LEVEL_OF_FILL, IPARM_FACTORIZATION,
  IPARM_STATIC_PIVOTING, IPARM_FREE_CSCUSER, IPARM_SCHUR_FACT_MODE, IPARM_TRANSPOSE_SOLVE,
  IPARM_SCHUR_SOLV_MODE, IPARM_APPLYPERM_WS, IPARM_REFINEMENT, IPARM_NBITER,
  IPARM_ITERMAX, IPARM_GMRES_IM, IPARM_SCHEDULER, IPARM_THREAD_NBR,
  IPARM_AUTOSPLIT_COMM, IPARM_GPU_NBR, IPARM_GPU_MEMORY_PERCENTAGE, IPARM_GPU_MEMORY_BLOCK_SIZE,
  IPARM_COMPRESS_MIN_WIDTH, IPARM_COMPRESS_MIN_HEIGHT, IPARM_COMPRESS_WHEN, IPARM_COMPRESS_METHOD,
  IPARM_COMPRESS_ORTHO, IPARM_COMPRESS_RELTOL, IPARM_COMPRESS_PRESELECT, IPARM_COMPRESS_ILUK,
  IPARM_MPI_THREAD_LEVEL, IPARM_MODIFY_PARAMETER, IPARM_START_TASK, IPARM_END_TASK,
  IPARM_FLOAT, IPARM_MTX_TYPE, IPARM_DOF_NBR, IPARM_SIZE
}
 Integer parameters. More...
 
enum  pastix_dparm_e {
  DPARM_FILL_IN, DPARM_EPSILON_REFINEMENT, DPARM_RELATIVE_ERROR, DPARM_EPSILON_MAGN_CTRL,
  DPARM_ORDER_TIME, DPARM_SYMBFACT_TIME, DPARM_REORDER_TIME, DPARM_BLEND_TIME,
  DPARM_ANALYZE_TIME, DPARM_PRED_FACT_TIME, DPARM_FACT_TIME, DPARM_FACT_FLOPS,
  DPARM_FACT_THFLOPS, DPARM_FACT_RLFLOPS, DPARM_SOLV_TIME, DPARM_SOLV_FLOPS,
  DPARM_SOLV_THFLOPS, DPARM_SOLV_RLFLOPS, DPARM_REFINE_TIME, DPARM_A_NORM,
  DPARM_COMPRESS_TOLERANCE, DPARM_COMPRESS_MIN_RATIO, DPARM_SIZE
}
 Float parameters. More...
 
enum  pastix_task_e {
  PastixTaskInit = 0, PastixTaskOrdering = 1, PastixTaskSymbfact = 2, PastixTaskAnalyze = 3,
  PastixTaskNumfact = 4, PastixTaskSolve = 5, PastixTaskRefine = 6, PastixTaskClean = 7
}
 Main steps for the pastix() interface. More...
 
enum  pastix_trace_e { PastixTraceNumfact = 16, PastixTraceSolve = 32 }
 Steps to trace.
 
enum  pastix_verbose_e { PastixVerboseNot = 0, PastixVerboseNo = 1, PastixVerboseYes = 2 }
 Verbose modes. More...
 
enum  pastix_io_e {
  PastixIONo = 0, PastixIOLoad = 1, PastixIOSave = 2, PastixIOLoadGraph = 4,
  PastixIOSaveGraph = 8, PastixIOLoadCSC = 16, PastixIOSaveCSC = 32
}
 IO strategy for graph and ordering. More...
 
enum  pastix_fact_mode_e { PastixFactModeLocal = 0, PastixFactModeSchur = 1, PastixFactModeBoth = 2 }
 Factorization Schur modes. More...
 
enum  pastix_solv_mode_e { PastixSolvModeLocal = 0, PastixSolvModeInterface = 1, PastixSolvModeSchur = 2 }
 Solve Schur modes. More...
 
enum  pastix_refine_e { PastixRefineGMRES, PastixRefineCG, PastixRefineSR, PastixRefineBiCGSTAB }
 Iterative refinement algorithms. More...
 
enum  pastix_factotype_e {
  PastixFactPOTRF = 0, PastixFactSYTRF = 1, PastixFactGETRF = 2, PastixFactPXTRF = 3,
  PastixFactHETRF = 4, PastixFactLLH = 0, PastixFactLDLT = 1, PastixFactLU = 2,
  PastixFactLLT = 3, PastixFactLDLH = 4
}
 Factorization algorithms available for IPARM_FACTORIZATION parameter. More...
 
enum  pastix_scheduler_e {
  PastixSchedSequential = 0, PastixSchedStatic = 1, PastixSchedParsec = 2, PastixSchedStarPU = 3,
  PastixSchedDynamic = 4
}
 Scheduler. More...
 
enum  pastix_ordering_e {
  PastixOrderScotch, PastixOrderMetis, PastixOrderPersonal, PastixOrderPtScotch,
  PastixOrderParMetis
}
 Ordering strategy. More...
 
enum  pastix_mpithreadmode_e {
  PastixMpiNone = 0, PastixMpiThreadSingle = 1, PastixMpiThreadFunneled = 2, PastixMpiThreadSerialized = 3,
  PastixMpiThreadMultiple = 4
}
 MPI thread mode. More...
 
enum  pastix_error_e {
  PASTIX_SUCCESS = 0, PASTIX_ERR_UNKNOWN = 1, PASTIX_ERR_ALLOC = 2, PASTIX_ERR_NOTIMPLEMENTED = 3,
  PASTIX_ERR_OUTOFMEMORY = 4, PASTIX_ERR_THREAD = 5, PASTIX_ERR_INTERNAL = 6, PASTIX_ERR_BADPARAMETER = 7,
  PASTIX_ERR_FILE = 8, PASTIX_ERR_INTEGER_TYPE = 9, PASTIX_ERR_IO = 10, PASTIX_ERR_MPI = 11
}
 Error codes. More...
 
enum  pastix_compress_when_e { PastixCompressNever, PastixCompressWhenBegin, PastixCompressWhenEnd, PastixCompressWhenDuring }
 Compression strategy available for IPARM_COMPRESS_WHEN parameter. More...
 
enum  pastix_compress_method_e {
  PastixCompressMethodSVD, PastixCompressMethodPQRCP, PastixCompressMethodRQRCP, PastixCompressMethodTQRCP,
  PastixCompressMethodRQRRT, PastixCompressMethodNbr
}
 Compression method available for IPARM_COMPRESS_METHOD parameter. More...
 
enum  pastix_compress_ortho_e { PastixCompressOrthoCGS, PastixCompressOrthoQR, PastixCompressOrthoPartialQR }
 Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter. More...
 
enum  pastix_split_e { PastixSplitNot, PastixSplitKway, PastixSplitKwayProjections }
 Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter. More...
 

Functions

void pastix_gendirectories (pastix_data_t *pastix_data)
 Generate a unique temporary directory to store output files. More...
 
char * pastix_fname (const char *dirname, const char *filename)
 Generate the full filename within local or global directory. More...
 
FILE * pastix_fopenw (const char *dirname, const char *filename, const char *mode)
 Open a file in the unique directory of the pastix instance. More...
 
FILE * pastix_fopen (const char *filename)
 Open a file in the current directory in read only mode. More...
 
void pastixWelcome (const pastix_data_t *pastix)
 Print information about the solver configuration. More...
 
void pastixSummary (const pastix_data_t *pastix)
 Print summary information. More...
 
void pastixInitParam (pastix_int_t *iparm, double *dparm)
 Initialize the iparm and dparm arrays to their default values. More...
 
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. More...
 
void pastixInit (pastix_data_t **pastix_data, PASTIX_Comm pastix_comm, pastix_int_t *iparm, double *dparm)
 Initialize the solver instance. More...
 
void pastixFinalize (pastix_data_t **pastix_data)
 Finalize the solver instance. More...
 
pastix_model_t * pastixModelsNew ()
 Create a new model data structure and initialize the values to their default. More...
 
void pastixModelsFree (pastix_model_t *model)
 Free a model data structure. More...
 
void pastixModelsLoad (pastix_data_t *pastix_data)
 Load the performance models that will be used by the solver. More...
 
int pastix (pastix_data_t **pastix_data_ptr, PASTIX_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, void *avals, 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. More...
 
#define pastix_coeftype_t   spm_coeftype_t
 Arithmetic types. More...
 
#define PastixPattern   SpmPattern
 
#define PastixFloat   SpmFloat
 
#define PastixDouble   SpmDouble
 
#define PastixComplex32   SpmComplex32
 
#define PastixComplex64   SpmComplex64
 

Constants compatible with CBLAS & LAPACK & PLASMA

The naming and numbering of the following constants is consistent with:

enum  pastix_layout_e { PastixRowMajor = 101, PastixColMajor = 102 }
 Direction of the matrix storage. More...
 
enum  pastix_trans_e { PastixNoTrans = 111, PastixTrans = 112, PastixConjTrans = 113 }
 Transpostion. More...
 
enum  pastix_mtxtype_e { PastixGeneral = PastixNoTrans, PastixSymmetric = PastixTrans, PastixHermitian = PastixConjTrans }
 Matrix symmetry type property. More...
 
enum  pastix_uplo_e { PastixUpper = 121, PastixLower = 122, PastixUpperLower = 123 }
 Upper/Lower part. More...
 
enum  pastix_coefside_e { PastixLCoef = 0, PastixUCoef = 1, PastixLUCoef = 2 }
 Data blocks used in the kernel. More...
 
enum  pastix_diag_e { PastixNonUnit = 131, PastixUnit = 132 }
 Diagonal. More...
 
enum  pastix_side_e { PastixLeft = 141, PastixRight = 142 }
 Side of the operation. More...
 
enum  pastix_normtype_e { PastixOneNorm = 171, PastixFrobeniusNorm = 174, PastixInfNorm = 175, PastixMaxNorm = 177 }
 Norms. More...
 
enum  pastix_dir_e { PastixDirForward = 391, PastixDirBackward = 392 }
 Direction. More...
 
typedef enum pastix_layout_e pastix_layout_t
 Direction of the matrix storage.
 
typedef enum pastix_trans_e pastix_trans_t
 Transpostion.
 
typedef enum pastix_mtxtype_e pastix_mtxtype_t
 Matrix symmetry type property. More...
 
typedef enum pastix_uplo_e pastix_uplo_t
 Upper/Lower part.
 
typedef enum pastix_coefside_e pastix_coefside_t
 Data blocks used in the kernel. More...
 
typedef enum pastix_diag_e pastix_diag_t
 Diagonal.
 
typedef enum pastix_side_e pastix_side_t
 Side of the operation.
 
typedef enum pastix_normtype_e pastix_normtype_t
 Norms.
 
typedef enum pastix_dir_e pastix_dir_t
 Direction.
 

Detailed Description

This group describes parameters and constants to control the solver.

Macro Definition Documentation

◆ pastix_coeftype_t

#define pastix_coeftype_t   spm_coeftype_t

Arithmetic types.

This describes the different arithmetics that can be stored in a sparse matrix.

Remarks
The values start at 2 for compatibility purpose with PLASMA and DPLASMA libraries, and they match the ones used in spm.
See also
spm_coeftype_t

Definition at line 281 of file api.h.

Typedef Documentation

◆ pastix_task_t

Main steps for the pastix() interface.

Those enums are used of the IPARM_START_TASK and IPARM_END_TASK parameters that configure the pastix() call.

◆ pastix_fact_mode_t

Factorization Schur modes.

Describe which part of the matrix is factorized or not

◆ pastix_solv_mode_t

Solve Schur modes.

Describe which part of the solve is applied with the matrix

\[ A = \left( \begin{array}{cc} L_{11}U_{11} & U_{12} \\ L_{21} & S_{22} \end{array} \right) \]

For the lower part (and symmetrically for upper part):

  1. Solve

    \[ L_{11} * x_{11} = b_{11} \]

  2. Apply the update

    \[ b_{22} = b_{22} - L_{21} * b_{11} \]

  3. Solve the lower part of

    \[ S_{22} * x_{22} = b_{22} \]

    if S22 has been previously factorized.

PastixSolvModeLocal applies only the step 1. PastixSolvModeInterface applies steps 1 and 2. PastixSolvModeSchur applies all steps.

◆ pastix_mtxtype_t

Matrix symmetry type property.

Remarks
Must match transposition.

◆ pastix_coefside_t

Data blocks used in the kernel.

Warning
Must be 0 and 1 respectively for Left and Upper as is it used to shift the pointers in the kernels from the lower to upper part.

Enumeration Type Documentation

◆ pastix_iparm_e

Integer parameters.

Enumerator
IPARM_VERBOSE 

Verbose mode (

See also
pastix_verbose_t) Default: PastixVerboseNo IN
IPARM_IO_STRATEGY 

IO strategy (

See also
pastix_io_t) Default: PastixIONo IN
IPARM_NNZEROS 

Number of nonzero entries in the factorized matrix Default: - OUT

IPARM_NNZEROS_BLOCK_LOCAL 

Number of nonzero entries in the local block factorized matrix Default: - OUT

IPARM_ALLOCATED_TERMS 

Maximum memory allocated for matrix terms Default: - OUT

IPARM_PRODUCE_STATS 

Compute some statistiques (such as precision error) Default: 0 IN

IPARM_TRACE 

Bitmask of the steps to trace Default: PastixTraceNumfact IN

IPARM_MC64 

MC64 operation Default: 0 IN

IPARM_ORDERING 

Choose ordering Default: PastixOrderScotch IN

IPARM_ORDERING_DEFAULT 

Use default ordering parameters with Scotch or Metis Default: 1 IN

IPARM_SCOTCH_MT 

Ordering multi-threaded (see Scotch Manual) Default: 1 (if available) IN

IPARM_SCOTCH_SWITCH_LEVEL 

Ordering switch level (see Scotch Manual) Default: 120 IN

IPARM_SCOTCH_CMIN 

Ordering cmin parameter (see Scotch Manual) Default: 0 IN

IPARM_SCOTCH_CMAX 

Ordering cmax parameter (see Scotch Manual) Default: 100000 IN

IPARM_SCOTCH_FRAT 

Ordering frat parameter (see Scotch Manual) Default: 8 IN

IPARM_METIS_CTYPE 

Metis parameters (see Metis Manual) Default: METIS_CTYPE_SHEM IN

IPARM_METIS_RTYPE 

Metis parameters (see Metis Manual) Default: METIS_RTYPE_SEP1SIDED IN

IPARM_METIS_NO2HOP 

Metis parameters (see Metis Manual) Default: 0 IN

IPARM_METIS_NSEPS 

Metis parameters (see Metis Manual) Default: 1 IN

IPARM_METIS_NITER 

Metis parameters (see Metis Manual) Default: 10 IN

IPARM_METIS_UFACTOR 

Metis parameters (see Metis Manual) Default: 200 IN

IPARM_METIS_COMPRESS 

Metis parameters (see Metis Manual) Default: 1 IN

IPARM_METIS_CCORDER 

Metis parameters (see Metis Manual) Default: 0 IN

IPARM_METIS_PFACTOR 

Metis parameters (see Metis Manual) Default: 0 IN

IPARM_METIS_SEED 

Metis parameters (see Metis Manual) Default: 3452 IN

IPARM_METIS_DBGLVL 

Metis parameters (see Metis Manual) Default: 0 IN

IPARM_AMALGAMATION_LVLBLAS 

Amalgamation level Default: 5 IN

IPARM_AMALGAMATION_LVLCBLK 

Amalgamation level Default: 5 IN

IPARM_REORDERING_SPLIT 

Reordering split level Default: 0 IN

IPARM_REORDERING_STOP 

Reordering stop criterion Default: PASTIX_INT_MAX IN

IPARM_SPLITTING_STRATEGY 

Strategy used to split supernodes Default: PastixSplitKway IN

IPARM_SPLITTING_LEVELS_PROJECTIONS 

Levels of projections Default: 0 IN

IPARM_SPLITTING_LEVELS_KWAY 

Levels of kway Default: PASTIX_INT_MAX IN

IPARM_SPLITTING_PROJECTIONS_DEPTH 

Number of level used for projections Default: 3 IN

IPARM_SPLITTING_PROJECTIONS_DISTANCE 

Distance used for projections Default: 3 IN

IPARM_SPLITTING_PROJECTIONS_WIDTH 

Width used for projections Default: 1 IN

IPARM_MIN_BLOCKSIZE 

Minimum block size Default: 160 IN

IPARM_MAX_BLOCKSIZE 

Maximum block size Default: 320 IN

IPARM_TASKS2D_LEVEL 

2D Distribution level (-1 for autolevel, 0 for 1D) Default: -1 IN

IPARM_TASKS2D_WIDTH 

Minimal width for 2D tasks with autolevel Default: IPARM_MIN_BLOCKSIZE IN

IPARM_ALLCAND 

Allow all threads to be candidate in the proportional mapping Default: 0 IN

IPARM_INCOMPLETE 

Incomplete factorization Default: 0 IN

IPARM_LEVEL_OF_FILL 

Level of fill for incomplete factorization Default: 0 IN

IPARM_FACTORIZATION 

Factorization mode Default: PastixFactLU IN

IPARM_STATIC_PIVOTING 

Static pivoting Default: - OUT

IPARM_FREE_CSCUSER 

Free user CSC Default: 0 IN

IPARM_SCHUR_FACT_MODE 

Specify if the Schur is factorized (

See also
pastix_fact_mode_t) Default: PastixFactModeLocal IN
IPARM_TRANSPOSE_SOLVE 

Solve A^t x = b (to avoid CSR/CSC conversion for instance) Default: PastixNoTrans IN

IPARM_SCHUR_SOLV_MODE 

Specify the solve parts to apply (

See also
pastix_solv_mode_t) Default: PastixSolvModeLocal IN
IPARM_APPLYPERM_WS 

Enable/disable extra workspace for a thread-safe swap Default: 1 IN

IPARM_REFINEMENT 

Refinement mode Default: PastixRefineGMRES IN

IPARM_NBITER 

Number of iterations performed in refinement Default: - OUT

IPARM_ITERMAX 

Maximum iteration number for refinement Default: 250 IN

IPARM_GMRES_IM 

GMRES restart parameter Default: 25 IN

IPARM_SCHEDULER 

Scheduler mode Default: PastixSchedDynamic IN

IPARM_THREAD_NBR 

Number of threads per process (-1 for auto detect) Default: -1 IN

IPARM_AUTOSPLIT_COMM 

Automaticaly split communicator to have one MPI task by node Default: 0 IN

IPARM_GPU_NBR 

Number of GPU devices Default: 0 IN

IPARM_GPU_MEMORY_PERCENTAGE 

Maximum percentage of the GPU memory used by the solver Default: 95 IN

IPARM_GPU_MEMORY_BLOCK_SIZE 

Size of GPU memory pages (for PaRSEC runtime) Default: 32 * 1024 IN

IPARM_COMPRESS_MIN_WIDTH 

Minimum width to compress a supernode Default: 128 IN

IPARM_COMPRESS_MIN_HEIGHT 

Minimum height to compress an off-diagonal block Default: 20 IN

IPARM_COMPRESS_WHEN 

When to compress a supernode Default: PastixCompressNever IN

IPARM_COMPRESS_METHOD 

Compression method (See pastix_compress_method_t) Default: PastixCompressMethodPQRCP IN

IPARM_COMPRESS_ORTHO 

Orthogonalization method Default: PastixCompressOrthoCGS IN

IPARM_COMPRESS_RELTOL 

Enable/Disable relative tolerance Default: 0 IN

IPARM_COMPRESS_PRESELECT 

Enable/Disable compression of preselected blocks Default: 1 IN

IPARM_COMPRESS_ILUK 

Set the ILU(k) level of preselection (-2 for auto-level) Default: -2 IN

IPARM_MPI_THREAD_LEVEL 

MPI thread level support Default: PastixMpiNone OUT

IPARM_MODIFY_PARAMETER 

Indicate if parameters have been set by user Default: 1 IN

IPARM_START_TASK 

Indicate the first step to execute Default: PastixTaskOrdering IN

IPARM_END_TASK 

Indicate the last step to execute Default: PastixTaskClean IN

IPARM_FLOAT 

Indicate the arithmetics Default: PastixDouble IN

IPARM_MTX_TYPE 

Indicate matrix format Default: -1 IN

IPARM_DOF_NBR 

Degree of freedom per node Default: 1 IN

Definition at line 35 of file api.h.

◆ pastix_dparm_e

Float parameters.

Enumerator
DPARM_FILL_IN 

Maximum memory (-DMEMORY_USAGE) Default: - OUT

DPARM_EPSILON_REFINEMENT 

Epsilon for refinement Default: -1. IN

DPARM_RELATIVE_ERROR 

Relative backward error Default: - OUT

DPARM_EPSILON_MAGN_CTRL 

Epsilon for magnitude control Default: 0. IN

DPARM_ORDER_TIME 

Time for subtask order (wallclock) Default: - OUT

DPARM_SYMBFACT_TIME 

Time for subtask symbfact (wallclock) Default: - OUT

DPARM_REORDER_TIME 

Time for subtask reordering (wallclock) Default: - OUT

DPARM_BLEND_TIME 

Time for subtask blend (wallclock) Default: - OUT

DPARM_ANALYZE_TIME 

Time for task analyse (wallclock) Default: - OUT

DPARM_PRED_FACT_TIME 

Predicted factorization time Default: - OUT

DPARM_FACT_TIME 

Time for task Numerical Factorization (wallclock) Default: - OUT

DPARM_FACT_FLOPS 

Factorization GFlops/s Default: - OUT

DPARM_FACT_THFLOPS 

Factorization theoretical Flops Default: - OUT

DPARM_FACT_RLFLOPS 

Factorization performed Flops Default: - OUT

DPARM_SOLV_TIME 

Time for task Solve (wallclock) Default: - OUT

DPARM_SOLV_FLOPS 

Solve GFlops/s Default: - OUT

DPARM_SOLV_THFLOPS 

Solve theoretical Flops Default: - OUT

DPARM_SOLV_RLFLOPS 

Solve performed Flops Default: - OUT

DPARM_REFINE_TIME 

Time for task refinement (wallclock) Default: - OUT

DPARM_A_NORM 

(||A||_f) norm Default: - OUT

DPARM_COMPRESS_TOLERANCE 

Tolerance for low-rank kernels Default: 0.01 IN

DPARM_COMPRESS_MIN_RATIO 

Min ratio for rank w.r.t. strict rank Default: 1.0 IN

Definition at line 152 of file api.h.

◆ pastix_task_e

Main steps for the pastix() interface.

Those enums are used of the IPARM_START_TASK and IPARM_END_TASK parameters that configure the pastix() call.

Enumerator
PastixTaskInit 

Startup the library

PastixTaskOrdering 

Ordering

PastixTaskSymbfact 

Symbolic factorization

PastixTaskAnalyze 

Tasks mapping and scheduling

PastixTaskNumfact 

Numerical factorization

PastixTaskSolve 

Numerical solve

PastixTaskRefine 

Numerical refinement

PastixTaskClean 

Clean

Definition at line 184 of file api.h.

◆ pastix_verbose_e

Verbose modes.

Enumerator
PastixVerboseNot 

Nothing

PastixVerboseNo 

Default

PastixVerboseYes 

Extended

Definition at line 206 of file api.h.

◆ pastix_io_e

IO strategy for graph and ordering.

Enumerator
PastixIONo 

No output or input

PastixIOLoad 

Load ordering and symbol matrix instead of applying symbolic factorization step

PastixIOSave 

Save ordering and symbol matrix after symbolic factorization step

PastixIOLoadGraph 

Load graph during ordering step

PastixIOSaveGraph 

Save graph during ordering step

PastixIOLoadCSC 

Load CSC(d) during ordering step

PastixIOSaveCSC 

Save CSC(d) during ordering step

Definition at line 215 of file api.h.

◆ pastix_fact_mode_e

Factorization Schur modes.

Describe which part of the matrix is factorized or not

Definition at line 230 of file api.h.

◆ pastix_solv_mode_e

Solve Schur modes.

Describe which part of the solve is applied with the matrix

\[ A = \left( \begin{array}{cc} L_{11}U_{11} & U_{12} \\ L_{21} & S_{22} \end{array} \right) \]

For the lower part (and symmetrically for upper part):

  1. Solve

    \[ L_{11} * x_{11} = b_{11} \]

  2. Apply the update

    \[ b_{22} = b_{22} - L_{21} * b_{11} \]

  3. Solve the lower part of

    \[ S_{22} * x_{22} = b_{22} \]

    if S22 has been previously factorized.

PastixSolvModeLocal applies only the step 1. PastixSolvModeInterface applies steps 1 and 2. PastixSolvModeSchur applies all steps.

Definition at line 254 of file api.h.

◆ pastix_refine_e

Iterative refinement algorithms.

Enumerator
PastixRefineGMRES 

GMRES

PastixRefineCG 

Conjugate Gradient

PastixRefineSR 

Simple refinement

PastixRefineBiCGSTAB 

BiCGStab

Definition at line 263 of file api.h.

◆ pastix_factotype_e

Factorization algorithms available for IPARM_FACTORIZATION parameter.

Enumerator
PastixFactPOTRF 

Cholesky factorization

PastixFactSYTRF 

LDL^t factorization

PastixFactGETRF 

LU factorization

PastixFactPXTRF 

LL^t factorization for complex matrices

PastixFactHETRF 

LDL^h factorization for complex matrices

PastixFactLLH 

LL^h factorization for complex matrices

PastixFactLDLT 

LDL^t factorization

PastixFactLU 

LU factorization

PastixFactLLT 

LL^t factorization

PastixFactLDLH 

LDL^h factorization for complex matrices

Definition at line 294 of file api.h.

◆ pastix_scheduler_e

Scheduler.

Enumerator
PastixSchedSequential 

Sequential

PastixSchedStatic 

Shared memory with static scheduler

PastixSchedParsec 

PaRSEC scheduler

PastixSchedStarPU 

StarPU scheduler

PastixSchedDynamic 

Shared memory with dynamic scheduler

Definition at line 310 of file api.h.

◆ pastix_ordering_e

Ordering strategy.

Enumerator
PastixOrderScotch 

Use Scotch ordering

PastixOrderMetis 

Use Metis ordering

PastixOrderPersonal 

Apply user's permutation, or load from file

PastixOrderPtScotch 

Use Pt-Scotch ordering

PastixOrderParMetis 

Use ParMetis ordering

Definition at line 321 of file api.h.

◆ pastix_mpithreadmode_e

MPI thread mode.

Enumerator
PastixMpiNone 

No MPI support

PastixMpiThreadSingle 

MPI thread single support

PastixMpiThreadFunneled 

MPI thread funneled support

PastixMpiThreadSerialized 

MPI thread serialized support

PastixMpiThreadMultiple 

MPI thread multiple support

Definition at line 332 of file api.h.

◆ pastix_error_e

Error codes.

Enumerator
PASTIX_SUCCESS 

No error

PASTIX_ERR_UNKNOWN 

Unknown error

PASTIX_ERR_ALLOC 

Allocation error

PASTIX_ERR_NOTIMPLEMENTED 

Not implemented feature

PASTIX_ERR_OUTOFMEMORY 

Not enough memory

PASTIX_ERR_THREAD 

Error with threads

PASTIX_ERR_INTERNAL 

Internal error

PASTIX_ERR_BADPARAMETER 

Bad parameters given

PASTIX_ERR_FILE 

Error in In/Out operations

PASTIX_ERR_INTEGER_TYPE 

Error with integer types

PASTIX_ERR_IO 

Error with input/output

PASTIX_ERR_MPI 

Error with MPI calls

Definition at line 343 of file api.h.

◆ pastix_compress_when_e

Compression strategy available for IPARM_COMPRESS_WHEN parameter.

Enumerator
PastixCompressNever 

Do not use compression

PastixCompressWhenBegin 

Compress before any numerical operation (Minimal-Memory)

PastixCompressWhenEnd 

Compress after contributions were accumulated (Just-In-Time)

PastixCompressWhenDuring 

Compress after contributions from other supernodes were accumulated

Definition at line 361 of file api.h.

◆ pastix_compress_method_e

Compression method available for IPARM_COMPRESS_METHOD parameter.

Enumerator
PastixCompressMethodSVD 

Use singular value decomposition for low-rank compression

PastixCompressMethodPQRCP 

Use partial QR with column pivoting for low-rank compression

PastixCompressMethodRQRCP 

Use randomized QR with column pivoting for low-rank compression

PastixCompressMethodTQRCP 

Use truncated QR with column pivotingfor low-rank compression

PastixCompressMethodRQRRT 

Use randomized QR with rotation for low-rank compression

PastixCompressMethodNbr 

Total number of available compression methods

Definition at line 371 of file api.h.

◆ pastix_compress_ortho_e

Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter.

Enumerator
PastixCompressOrthoCGS 

Orthogonalize low-rank bases with Gram-Schimdt

PastixCompressOrthoQR 

Orthogonalize low-rank bases with QR decomposition

PastixCompressOrthoPartialQR 

Orthogonalize low-rank bases with projections in orthogonal space followed by smaller QR

Definition at line 383 of file api.h.

◆ pastix_split_e

Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter.

Enumerator
PastixSplitNot 

Do not apply dedicated low-rank clustering strategy

PastixSplitKway 

Use k-way partitioning

PastixSplitKwayProjections 

Use projections and k-way in clusters

Definition at line 392 of file api.h.

◆ pastix_layout_e

Direction of the matrix storage.

Enumerator
PastixRowMajor 

Storage in row major order

PastixColMajor 

Storage in column major order

Definition at line 413 of file api.h.

◆ pastix_trans_e

Transpostion.

Enumerator
PastixNoTrans 

Use A

PastixTrans 

Use A^t

PastixConjTrans 

Use conj(A^t)

Definition at line 421 of file api.h.

◆ pastix_mtxtype_e

Matrix symmetry type property.

Remarks
Must match transposition.
Enumerator
PastixGeneral 

The matrix is general

PastixSymmetric 

The matrix is symmetric

PastixHermitian 

The matrix is hermitian

Definition at line 432 of file api.h.

◆ pastix_uplo_e

Upper/Lower part.

Enumerator
PastixUpper 

Use lower triangle of A

PastixLower 

Use upper triangle of A

PastixUpperLower 

Use the full A

Definition at line 441 of file api.h.

◆ pastix_coefside_e

Data blocks used in the kernel.

Warning
Must be 0 and 1 respectively for Left and Upper as is it used to shift the pointers in the kernels from the lower to upper part.
Enumerator
PastixLCoef 

Coefficients of the lower triangular L are used

PastixUCoef 

Coefficients of the upper triangular U are used

PastixLUCoef 

Coefficients of the upper/lower triangular U/L are used

Definition at line 453 of file api.h.

◆ pastix_diag_e

Diagonal.

Enumerator
PastixNonUnit 

Diagonal is non unitary

PastixUnit 

Diagonal is unitary

Definition at line 462 of file api.h.

◆ pastix_side_e

Side of the operation.

Enumerator
PastixLeft 

Apply operator on the left

PastixRight 

Apply operator on the right

Definition at line 470 of file api.h.

◆ pastix_normtype_e

Norms.

Enumerator
PastixOneNorm 

One norm: max_j( sum_i( |a_{ij}| ) )

PastixFrobeniusNorm 

Frobenius norm: sqrt( sum_{i,j} (a_{ij}^2) )

PastixInfNorm 

Inifinite norm: max_i( sum_j( |a_{ij}| ) )

PastixMaxNorm 

Inifinite norm: max_{i,j}( | a_{ij} | )

Definition at line 478 of file api.h.

◆ pastix_dir_e

Direction.

Enumerator
PastixDirForward 

Forward direction

PastixDirBackward 

Backward direction

Definition at line 488 of file api.h.

Function Documentation

◆ pastix_gendirectories()

void pastix_gendirectories ( pastix_data_t *  pastix_data)

Generate a unique temporary directory to store output files.

Parameters
[in,out]pastix_dataOn entry, the pastix_data structure associated to the pastix instance. On exit, if not already initialized, pastix_data->dir_global and pastix_data->dir_local are initialized.

Definition at line 69 of file api.c.

Referenced by blendCtrlInit(), coeftab_cdump(), coeftab_ddump(), coeftab_sdump(), coeftab_zdump(), coeftabInit(), graphSave(), orderDraw(), and pastixOrderSave().

◆ pastix_fname()

char* pastix_fname ( const char *  dirname,
const char *  filename 
)

Generate the full filename within local or global directory.

Parameters
[in]dirnameThe pointer to the directory string associated to the instance. It must have been initialized before calling.
[in]filenameThe filename to create in the unique directory.
Returns
The filename to use. NULL if failed.

Definition at line 189 of file api.c.

Referenced by graphSave(), and pastix_fopenw().

◆ pastix_fopenw()

FILE* pastix_fopenw ( const char *  dirname,
const char *  filename,
const char *  mode 
)

Open a file in the unique directory of the pastix instance.

Parameters
[in]dirnameThe pointer to the directory string associated to the instance. It must have been initialized before calling.
[in]filenameThe filename to create in the unique directory.
[in]modeOpening mode of the file as described by the fopen() function.
Returns
The FILE structure of the opened file. NULL if failed.

Definition at line 232 of file api.c.

References pastix_fname().

Referenced by candSave(), cpucblk_cinit(), cpucblk_dinit(), cpucblk_sinit(), cpucblk_zinit(), orderDraw(), pastixOrderSave(), simu_printBlockCtrbNbr(), and solverComMatrixGather().

◆ pastix_fopen()

FILE* pastix_fopen ( const char *  filename)

Open a file in the current directory in read only mode.

Parameters
[in]filenameThe filename of the file to open.
Returns
The FILE structure of the opened file. NULL if failed.

Definition at line 279 of file api.c.

Referenced by modelsRead(), and pastixOrderLoad().

◆ pastixWelcome()

◆ pastixSummary()

void pastixSummary ( const pastix_data_t *  pastix)

Print summary information.

Parameters
[in]pastixThe main data structure.

Definition at line 376 of file api.c.

References pastix().

Referenced by pastixFinalize().

◆ pastixInitParam()

void pastixInitParam ( pastix_int_t *  iparm,
double *  dparm 
)

Initialize the iparm and dparm arrays to their default values.

This is performed only if iparm[IPARM_MODIFY_PARAMETER] is set to 0.

Parameters
[in,out]iparmThe integer array of parameters to initialize.
[in,out]dparmThe floating point array of parameters to initialize.

Definition at line 401 of file api.c.

Referenced by pastix(), and pastixInitWithAffinity().

◆ pastixInitWithAffinity()

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.

Remarks
You should always prefer the pastixInit() function when hwloc is available, and use the pastixInitWithAffinity() function only if you know what you want to do with your threads.
Parameters
[in,out]pastix_dataThe main data structure.
[in]pastix_commThe MPI communicator.
[in,out]iparmThe integer array of parameters to initialize.
[in,out]dparmThe floating point array of parameters to initialize.
[in]bindtabInteger array of size iparm[IPARM_THREAD_NBR] that will specify the thread binding. NULL if let to the system. Each thread i will be bound to to the core bindtab[i] if bindtab[i] >= 0, or not bound if bindtab[i] < 0. If other libraries of the main application are spawning their own threads too (eg. OpenMP), we strongly recommend not to bind the main thread, and let bindtab[0] = -1 to avoid binding impact on other libraries.

Definition at line 680 of file api.c.

References apiInitMPI(), IPARM_AUTOSPLIT_COMM, IPARM_MODIFY_PARAMETER, IPARM_MPI_THREAD_LEVEL, IPARM_SCHEDULER, IPARM_THREAD_NBR, IPARM_VERBOSE, pastix(), pastix_parsec_init(), pastix_starpu_init(), pastixInitParam(), pastixModelsLoad(), PastixMpiNone, PastixMpiThreadFunneled, PastixMpiThreadMultiple, PastixMpiThreadSerialized, PastixMpiThreadSingle, PastixSchedDynamic, PastixSchedParsec, PastixSchedStarPU, PastixVerboseNot, and pastixWelcome().

Referenced by pastixInit().

◆ pastixInit()

void pastixInit ( pastix_data_t **  pastix_data,
PASTIX_Comm  pastix_comm,
pastix_int_t *  iparm,
double *  dparm 
)

Initialize the solver instance.

Parameters
[in,out]pastix_dataThe main data structure.
[in]pastix_commThe MPI communicator.
[in,out]iparmThe integer array of parameters to initialize.
[in,out]dparmThe floating point array of parameters to initialize.

Definition at line 857 of file api.c.

References pastixInitWithAffinity().

Referenced by pastix().

◆ pastixFinalize()

void pastixFinalize ( pastix_data_t **  pastix_data)

Finalize the solver instance.

Parameters
[in,out]pastix_dataThe main data structure.

Definition at line 880 of file api.c.

References bcscExit(), graphExit(), pastix(), pastix_parsec_finalize(), pastix_starpu_finalize(), pastixModelsFree(), pastixOrderExit(), pastixSummary(), pastixSymbolExit(), and solverExit().

Referenced by pastix().

◆ pastixModelsNew()

pastix_model_t* pastixModelsNew ( )

Create a new model data structure and initialize the values to their default.

Returns
The pointer to the allocated and initialized data structure.

Definition at line 490 of file models.c.

Referenced by pastixModelsLoad().

◆ pastixModelsFree()

void pastixModelsFree ( pastix_model_t *  model)

Free a model data structure.

Parameters
[in,out]modelThe model structure to free.

Definition at line 520 of file models.c.

Referenced by pastixFinalize(), and pastixModelsLoad().

◆ pastixModelsLoad()

void pastixModelsLoad ( pastix_data_t *  pastix_data)

Load the performance models that will be used by the solver.

This function initializes the model coefficients with the values stored in the files defined by the environment variables PASTIX_MODELS_CPU and PASTIX_MODELS_GPU. If they are not defined, models are initialized with the embedded default models.

Parameters
[in,out]pastix_dataThe pastix_data structure in which to store the CPU and GPU models.

Definition at line 549 of file models.c.

References modelsInitDefaultCPU(), modelsInitDefaultGPU(), modelsRead(), pastixModelsFree(), and pastixModelsNew().

Referenced by pastixInitWithAffinity().

◆ pastix()

int pastix ( pastix_data_t **  pastix_data_ptr,
PASTIX_Comm  pastix_comm,
pastix_int_t  n,
pastix_int_t *  colptr,
pastix_int_t *  row,
void *  avals,
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.

Parameters
[in,out]pastix_data_ptrThe pastix data structure of the solver to store the state of the solver at every call.
[in]pastix_commThe MPI communicator to use for the distributed solver.
[in]nThe size of the sparse matrix system to solve.
[in,out]colptrThe pointer to the column index of the sparse matrix in the CSC format. On exit, the base value of the array might have changed, and/or the pointer might have been freed if IPARM_FREE_CSCUSER is set, and the factorization step is performed.
[in,out]rowThe pointer to the row array of the sparse matrix in the CSC format. On exit, the base value of the array might have changed, and/or the pointer might have been freed if IPARM_FREE_CSCUSER is set, and the factorization step is performed.
[in,out]avalsThe pointer to the values array of the sparse matrix in the CSC format. On exit, the pointer might have been freed if IPARM_FREE_CSCUSER is set, and the factorization step is performed.
[in,out]permThe pointer to the permutation array. On entry: the pointer might be allocated to store the generated permutation on exit, or to provide the user permutation. On exit, the permutation used by the solver is returned if perm is not NULL.
[in,out]invpThe pointer to the inverse permutation array. On entry: the pointer might be allocated to store the generated inverse permutation on exit, or to provide the user permutation. On exit, the inverse permutation used by the solver is returned if invp is not NULL.
[in,out]bArray of size n -by- nrhs On entry, contains the nrhs vectors of the problem. On exit, contains the nrhs solution vectors of the problem.
[in]nrhsThe number of right hand side in the problem.
[in,out]iparmArray of size IPARM_SIZE On entry, contains all the integer parameters of the solver. On exit, the aray is updated with integer outputs of the solver.
[in,out]dparmArray of size DPARM_SIZE On entry, contains all the double parameters of the solver. On exit, the aray is updated with double outputs of the solver.
Return values
PASTIX_SUCCESSon succesful exit,
PASTIX_ERR_BADPARAMETERon incorrect input parameter,
PASTIX_ERR_NOTIMPLEMENTEDon variadic dofs,
PASTIX_ERR_UNKNOWNon undefined behaviors.

Definition at line 103 of file pastix.c.

References IPARM_DOF_NBR, IPARM_END_TASK, IPARM_FLOAT, IPARM_MODIFY_PARAMETER, IPARM_MTX_TYPE, IPARM_START_TASK, IPARM_VERBOSE, PASTIX_ERR_BADPARAMETER, PASTIX_ERR_UNKNOWN, pastix_subtask_blend(), pastix_subtask_order(), pastix_subtask_symbfact(), PASTIX_SUCCESS, pastix_task_numfact(), pastix_task_refine(), pastix_task_solve(), pastixFinalize(), pastixInit(), pastixInitParam(), pastixOrderAlloc(), pastixOrderExit(), PastixTaskAnalyze, PastixTaskClean, PastixTaskInit, PastixTaskNumfact, PastixTaskOrdering, PastixTaskRefine, PastixTaskSolve, PastixTaskSymbfact, PastixVerboseNo, pastix_order_s::peritab, pastix_order_s::permtab, and pastix_order_s::vertnbr.

Referenced by pastix_parsec_finalize(), pastix_parsec_init(), pastix_starpu_finalize(), pastix_starpu_init(), pastixFinalize(), pastixInitWithAffinity(), pastixSummary(), and pastixWelcome().