PaStiX Handbook  6.3.2
api.h
Go to the documentation of this file.
1 /**
2  *
3  * @file pastix/api.h
4  *
5  * PaStiX API enums parameters.
6  *
7  * This file is generated automatically. If you want to modify it, modify
8  * ${PASTIX_HOME}/tools/gen_param/pastix_[iparm/dparm/enums].py and run
9  * ${PASTIX_HOME}/tools/gen_param/gen_parm_files.py ${PASTIX_HOME}.
10  *
11  * @copyright 2004-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
12  * Univ. Bordeaux. All rights reserved.
13  *
14  * @version 6.3.2
15  * @author Mathieu Faverge
16  * @author Pierre Ramet
17  * @author Xavier Lacoste
18  * @author Esragul Korkmaz
19  * @author Gregoire Pichon
20  * @author Tony Delarue
21  * @date 2023-11-10
22  *
23  * @addtogroup pastix_api
24  * @{
25  *
26  **/
27 #ifndef _pastix_api_h_
28 #define _pastix_api_h_
29 
30 BEGIN_C_DECLS
31 
32 /**
33  * @brief Integer parameters
34  */
35 typedef enum pastix_iparm_e {
36  IPARM_VERBOSE, /**< Verbose mode (@see pastix_verbose_t) Default: PastixVerboseNo IN */
37  IPARM_IO_STRATEGY, /**< IO strategy (@see pastix_io_t) Default: PastixIONo IN */
38 
39  /* Stats */
40  IPARM_NNZEROS, /**< Number of nonzero entries in the factorized matrix Default: - OUT */
41  IPARM_NNZEROS_BLOCK_LOCAL, /**< Number of nonzero entries in the local block factorized matrix Default: - OUT */
42  IPARM_ALLOCATED_TERMS, /**< Maximum memory allocated for matrix terms Default: - OUT */
43  IPARM_PRODUCE_STATS, /**< Compute some statistiques (such as precision error) Default: 0 IN */
44  IPARM_TRACE, /**< Bitmask of the steps to trace Default: PastixTraceNot IN */
45 
46  /* Scaling */
47  IPARM_MC64, /**< MC64 operation Default: 0 IN */
48 
49  /* Ordering */
50  IPARM_ORDERING, /**< Choose ordering Default: PastixOrderScotch IN */
51  IPARM_ORDERING_DEFAULT, /**< Use default ordering parameters with Scotch or Metis Default: 1 IN */
52 
53  /* Subset for Scotch */
54  IPARM_SCOTCH_MT, /**< Ordering multi-threaded (see Scotch Manual) Default: 1 (if available) IN */
55  IPARM_SCOTCH_SWITCH_LEVEL, /**< Ordering switch level (see Scotch Manual) Default: 120 IN */
56  IPARM_SCOTCH_CMIN, /**< Ordering cmin parameter (see Scotch Manual) Default: 0 IN */
57  IPARM_SCOTCH_CMAX, /**< Ordering cmax parameter (see Scotch Manual) Default: 100000 IN */
58  IPARM_SCOTCH_FRAT, /**< Ordering frat parameter (see Scotch Manual) Default: 8 IN */
59 
60  /* Subset for Metis */
61  IPARM_METIS_CTYPE, /**< Metis parameters (see Metis Manual) Default: METIS_CTYPE_SHEM IN */
62  IPARM_METIS_RTYPE, /**< Metis parameters (see Metis Manual) Default: METIS_RTYPE_SEP1SIDED IN */
63  IPARM_METIS_NO2HOP, /**< Metis parameters (see Metis Manual) Default: 0 IN */
64  IPARM_METIS_NSEPS, /**< Metis parameters (see Metis Manual) Default: 1 IN */
65  IPARM_METIS_NITER, /**< Metis parameters (see Metis Manual) Default: 10 IN */
66  IPARM_METIS_UFACTOR, /**< Metis parameters (see Metis Manual) Default: 200 IN */
67  IPARM_METIS_COMPRESS, /**< Metis parameters (see Metis Manual) Default: 1 IN */
68  IPARM_METIS_CCORDER, /**< Metis parameters (see Metis Manual) Default: 0 IN */
69  IPARM_METIS_PFACTOR, /**< Metis parameters (see Metis Manual) Default: 0 IN */
70  IPARM_METIS_SEED, /**< Metis parameters (see Metis Manual) Default: 3452 IN */
71  IPARM_METIS_DBGLVL, /**< Metis parameters (see Metis Manual) Default: 0 IN */
72 
73  /* Symbolic Factorization */
74  IPARM_AMALGAMATION_LVLBLAS, /**< Amalgamation level Default: 5 IN */
75  IPARM_AMALGAMATION_LVLCBLK, /**< Amalgamation level Default: 5 IN */
76 
77  /* Reordering */
78  IPARM_REORDERING_SPLIT, /**< Reordering split level Default: 0 IN */
79  IPARM_REORDERING_STOP, /**< Reordering stop criterion Default: PASTIX_INT_MAX IN */
80  IPARM_SPLITTING_STRATEGY, /**< Strategy used to split supernodes Default: PastixSplitKway IN */
81  IPARM_SPLITTING_LEVELS_PROJECTIONS, /**< Levels of projections Default: 0 IN */
82  IPARM_SPLITTING_LEVELS_KWAY, /**< Levels of kway Default: PASTIX_INT_MAX IN */
83  IPARM_SPLITTING_PROJECTIONS_DEPTH, /**< Number of level used for projections Default: 3 IN */
84  IPARM_SPLITTING_PROJECTIONS_DISTANCE, /**< Distance used for projections Default: 3 IN */
85  IPARM_SPLITTING_PROJECTIONS_WIDTH, /**< Width used for projections Default: 1 IN */
86 
87  /* Analyze */
88  IPARM_MIN_BLOCKSIZE, /**< Minimum block size Default: 160 IN */
89  IPARM_MAX_BLOCKSIZE, /**< Maximum block size Default: 320 IN */
90  IPARM_TASKS2D_LEVEL, /**< 2D Distribution level (-1 for autolevel, 0 for 1D) Default: -1 IN */
91  IPARM_TASKS2D_WIDTH, /**< Minimal width for 2D tasks with autolevel Default: IPARM_MIN_BLOCKSIZE IN */
92  IPARM_ALLCAND, /**< Allow all threads to be candidate in the proportional mapping Default: 0 IN */
93 
94  /* Incomplete */
95  IPARM_INCOMPLETE, /**< Incomplete factorization Default: 0 IN */
96  IPARM_LEVEL_OF_FILL, /**< Level of fill for incomplete factorization Default: 0 IN */
97 
98  /* Factorization */
99  IPARM_FACTORIZATION, /**< Factorization mode Default: PastixFactLU IN */
100  IPARM_FACTO_LOOK_SIDE, /**< Factorization looking variant algorithm Default: PastixFactRightLooking IN */
101  IPARM_STATIC_PIVOTING, /**< Static pivoting Default: - OUT */
102  IPARM_FREE_CSCUSER, /**< Free user CSC Default: 0 IN */
103  IPARM_SCHUR_FACT_MODE, /**< Specify if the Schur is factorized (@see pastix_fact_mode_t) Default: PastixFactModeLocal IN */
104 
105  /* Solve */
106  IPARM_TRANSPOSE_SOLVE, /**< Solve A^t x = b (to avoid CSR/CSC conversion for instance) Default: PastixNoTrans IN */
107  IPARM_SCHUR_SOLV_MODE, /**< Specify the solve parts to apply (@see pastix_solv_mode_t) Default: PastixSolvModeLocal IN */
108  IPARM_APPLYPERM_WS, /**< Enable/disable extra workspace for a thread-safe swap Default: 1 IN */
109 
110  /* Refinement */
111  IPARM_REFINEMENT, /**< Refinement mode Default: PastixRefineGMRES IN */
112  IPARM_NBITER, /**< Number of iterations performed in refinement Default: - OUT */
113  IPARM_ITERMAX, /**< Maximum iteration number for refinement Default: 250 IN */
114  IPARM_GMRES_IM, /**< GMRES restart parameter Default: 25 IN */
115 
116  /* Context */
117  IPARM_SCHEDULER, /**< Scheduler mode Default: PastixSchedDynamic IN */
118  IPARM_THREAD_NBR, /**< Number of threads per process (-1 for auto detect) Default: -1 IN */
119  IPARM_SOCKET_NBR, /**< Number of sockets for papi energy measure (default: 0) Default: 0 IN */
120  IPARM_AUTOSPLIT_COMM, /**< Automaticaly split communicator to have one MPI task by node Default: 0 IN */
121 
122  /* GPU */
123  IPARM_GPU_NBR, /**< Number of GPU devices Default: 0 IN */
124  IPARM_GPU_MEMORY_PERCENTAGE, /**< Maximum percentage of the GPU memory used by the solver Default: 95 IN */
125  IPARM_GPU_MEMORY_BLOCK_SIZE, /**< Size of GPU memory pages (for PaRSEC runtime) Default: 32 * 1024 IN */
126  IPARM_GLOBAL_ALLOCATION, /**< Enables/Disables the global allocation of the coeftab matrix Default: 0 IN */
127 
128  /* Compression */
129  IPARM_COMPRESS_MIN_WIDTH, /**< Minimum width to compress a supernode Default: 128 IN */
130  IPARM_COMPRESS_MIN_HEIGHT, /**< Minimum height to compress an off-diagonal block Default: 20 IN */
131  IPARM_COMPRESS_WHEN, /**< When to compress a supernode Default: PastixCompressNever IN */
132  IPARM_COMPRESS_METHOD, /**< Compression method (See pastix_compress_method_t) Default: PastixCompressMethodPQRCP IN */
133  IPARM_COMPRESS_ORTHO, /**< Orthogonalization method Default: PastixCompressOrthoCGS IN */
134  IPARM_COMPRESS_RELTOL, /**< Enable/Disable relative tolerance Default: 0 IN */
135  IPARM_COMPRESS_PRESELECT, /**< Enable/Disable compression of preselected blocks Default: 1 IN */
136  IPARM_COMPRESS_ILUK, /**< Set the ILU(k) level of preselection (-2 for auto-level) Default: -2 IN */
137 
138  /* mixed-precision parameters */
139  IPARM_MIXED, /**< Enables/Disables mixed-precision Default: 0 IN */
140  IPARM_FTZ, /**< Enables/Disables Flush-To-Zero for denormal numbers Default: 0 IN */
141 
142  /* MPI modes */
143  IPARM_MPI_THREAD_LEVEL, /**< MPI thread level support Default: PastixMpiNone OUT */
144 
145  /* Subset for old interface */
146  IPARM_MODIFY_PARAMETER, /**< Indicate if parameters have been set by user Default: 1 IN */
147  IPARM_START_TASK, /**< Indicate the first step to execute Default: PastixTaskOrdering IN */
148  IPARM_END_TASK, /**< Indicate the last step to execute Default: PastixTaskClean IN */
149  IPARM_FLOAT, /**< Indicate the arithmetics Default: PastixDouble IN */
150  IPARM_MTX_TYPE, /**< Indicate matrix format Default: -1 IN */
151  IPARM_DOF_NBR, /**< Degree of freedom per node Default: 1 IN */
152 
153  IPARM_SIZE
155 
156 /**
157  * @brief Float parameters
158  */
159 typedef enum pastix_dparm_e {
160  DPARM_FILL_IN, /**< Maximum memory (-DMEMORY_USAGE) Default: - OUT */
161  DPARM_EPSILON_REFINEMENT, /**< Epsilon for refinement Default: -1. IN */
162  DPARM_RELATIVE_ERROR, /**< Relative backward error Default: - OUT */
163  DPARM_EPSILON_MAGN_CTRL, /**< Epsilon for magnitude control Default: 0. IN */
164  DPARM_ORDER_TIME, /**< Time for subtask order (wallclock) Default: - OUT */
165  DPARM_SYMBFACT_TIME, /**< Time for subtask symbfact (wallclock) Default: - OUT */
166  DPARM_REORDER_TIME, /**< Time for subtask reordering (wallclock) Default: - OUT */
167  DPARM_BLEND_TIME, /**< Time for subtask blend (wallclock) Default: - OUT */
168  DPARM_ANALYZE_TIME, /**< Time for task analyse (wallclock) Default: - OUT */
169  DPARM_PRED_FACT_TIME, /**< Predicted factorization time Default: - OUT */
170  DPARM_FACT_TIME, /**< Time for task Numerical Factorization (wallclock) Default: - OUT */
171  DPARM_FACT_FLOPS, /**< Factorization GFlops/s Default: - OUT */
172  DPARM_FACT_THFLOPS, /**< Factorization theoretical Flops Default: - OUT */
173  DPARM_FACT_RLFLOPS, /**< Factorization performed Flops Default: - OUT */
174  DPARM_FACT_ENERGY, /**< Energy for task Factorization Default: - OUT */
175  DPARM_MEM_FR, /**< Memory used by the matrix in full-rank format Default: - OUT */
176  DPARM_MEM_LR, /**< Memory used by the matrix in low-rank format Default: - OUT */
177  DPARM_SOLV_TIME, /**< Time for task Solve (wallclock) Default: - OUT */
178  DPARM_SOLV_FLOPS, /**< Solve GFlops/s Default: - OUT */
179  DPARM_SOLV_THFLOPS, /**< Solve theoretical Flops Default: - OUT */
180  DPARM_SOLV_RLFLOPS, /**< Solve performed Flops Default: - OUT */
181  DPARM_SOLV_ENERGY, /**< Energy for task Solve Default: - OUT */
182  DPARM_REFINE_TIME, /**< Time for task refinement (wallclock) Default: - OUT */
183  DPARM_A_NORM, /**< (||A||_f) norm Default: - OUT */
184  DPARM_COMPRESS_TOLERANCE, /**< Tolerance for low-rank kernels Default: 0.01 IN */
185  DPARM_COMPRESS_MIN_RATIO, /**< Min ratio for rank w.r.t. strict rank Default: 1.0 IN */
186  DPARM_SIZE
188 
189 /**
190  * @brief Main steps for the pastix() interface.
191  *
192  * Those enums are used of the IPARM_START_TASK and IPARM_END_TASK parameters
193  * that configure the pastix() call.
194  */
195 typedef enum pastix_task_e {
196  PastixTaskInit = 0, /**< Startup the library */
197  PastixTaskOrdering = 1, /**< Ordering */
198  PastixTaskSymbfact = 2, /**< Symbolic factorization */
199  PastixTaskAnalyze = 3, /**< Tasks mapping and scheduling */
200  PastixTaskNumfact = 4, /**< Numerical factorization */
201  PastixTaskSolve = 5, /**< Numerical solve */
202  PastixTaskRefine = 6, /**< Numerical refinement */
203  PastixTaskClean = 7 /**< Clean */
205 
206 /**
207  * @brief Steps to trace.
208  */
209 typedef enum pastix_trace_e {
210  PastixTraceNot = 0, /**< No trace */
211  PastixTraceNumfact = 16, /**< Trace of the factorisation only */
212  PastixTraceSolve = 32, /**< Trace of the solve only */
213  PastixTraceFactAndSolve = 48 /**< Trace of the fcatorisation and solve */
215 
216 /**
217  * @brief Verbose modes
218  */
219 typedef enum pastix_verbose_e {
220  PastixVerboseNot = 0, /**< Nothing */
221  PastixVerboseNo = 1, /**< Default */
222  PastixVerboseYes = 2 /**< Extended */
224 
225 /**
226  * @brief IO strategy for graph and ordering
227  */
228 typedef enum pastix_io_e {
229  PastixIONo = 0, /**< No output or input */
230  PastixIOLoad = 1, /**< Load ordering and symbol matrix instead of applying symbolic factorization step */
231  PastixIOSave = 2, /**< Save ordering and symbol matrix after symbolic factorization step */
232  PastixIOLoadGraph = 4, /**< Load graph during ordering step */
233  PastixIOSaveGraph = 8, /**< Save graph during ordering step */
234  PastixIOLoadCSC = 16, /**< Load CSC(d) during ordering step */
235  PastixIOSaveCSC = 32 /**< Save CSC(d) during ordering step */
237 
238 /**
239  * @brief Factorization Schur modes
240  *
241  * Describe which part of the matrix is factorized or not
242  */
243 typedef enum pastix_fact_mode_e {
244  PastixFactModeLocal = 0,
245  PastixFactModeSchur = 1,
246  PastixFactModeBoth = 2
248 
249 /**
250  * @brief Solve Schur modes
251  *
252  * Describe which part of the solve is applied with the matrix
253  *
254  * \f[ A = \left( \begin{array}{cc}
255  * L_{11}U_{11} & U_{12} \\
256  * L_{21} & S_{22} \end{array} \right) \f]
257  *
258  * For the lower part (and symmetrically for upper part):
259  * -# Solve \f[ L_{11} * x_{11} = b_{11} \f]
260  * -# Apply the update \f[ b_{22} = b_{22} - L_{21} * b_{11} \f]
261  * -# Solve the lower part of \f[ S_{22} * x_{22} = b_{22} \f] if S22 has been previously factorized.
262  *
263  * PastixSolvModeLocal applies only the step 1.
264  * PastixSolvModeInterface applies steps 1 and 2.
265  * PastixSolvModeSchur applies all steps.
266  */
267 typedef enum pastix_solv_mode_e {
268  PastixSolvModeLocal = 0,
269  PastixSolvModeInterface = 1,
270  PastixSolvModeSchur = 2
272 
273 /**
274  * @brief Iterative refinement algorithms
275  */
276 typedef enum pastix_refine_e {
277  PastixRefineGMRES, /**< GMRES */
278  PastixRefineCG, /**< Conjugate Gradient */
279  PastixRefineSR, /**< Simple refinement */
280  PastixRefineBiCGSTAB /**< BiCGStab */
282 
283 /**
284  * @brief Arithmetic types.
285  *
286  * This describes the different arithmetics that can be stored in a sparse matrix.
287  * @remark The values start at 2 for compatibility purpose with PLASMA and
288  * DPLASMA libraries, and they match the ones used in spm.
289  *
290  * @sa spm_coeftype_t
291  *
292  * @{
293  */
294 typedef spm_coeftype_t pastix_coeftype_t;
295 #ifndef DOXYGEN_SHOULD_SKIP_THIS
296 #define PastixPattern SpmPattern
297 #define PastixFloat SpmFloat
298 #define PastixDouble SpmDouble
299 #define PastixComplex32 SpmComplex32
300 #define PastixComplex64 SpmComplex64
301 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
302 /**
303  * @}
304  */
305 
306 /**
307  * @brief Factorization algorithms available for IPARM_FACTORIZATION parameter
308  */
309 typedef enum pastix_factotype_e {
310  PastixFactPOTRF = 0, /**< Cholesky factorization */
311  PastixFactSYTRF = 1, /**< LDL^t factorization */
312  PastixFactGETRF = 2, /**< LU factorization */
313  PastixFactPXTRF = 3, /**< LL^t factorization for complex matrices */
314  PastixFactHETRF = 4, /**< LDL^h factorization for complex matrices */
315  PastixFactLLH = 0, /**< LL^h factorization for complex matrices */
316  PastixFactLDLT = 1, /**< LDL^t factorization */
317  PastixFactLU = 2, /**< LU factorization */
318  PastixFactLLT = 3, /**< LL^t factorization */
319  PastixFactLDLH = 4 /**< LDL^h factorization for complex matrices */
321 
322 /**
323  * @brief Factorization looking side available for IPARM_FACTO_LOOK_SIDE parameter
324  */
326  PastixFactLeftLooking = 0, /**< Left Looking factorization */
327  PastixFactRightLooking = 1 /**< Right Looking factorization */
329 
330 /**
331  * @brief Scheduler
332  */
333 typedef enum pastix_scheduler_e {
334  PastixSchedSequential = 0, /**< Sequential */
335  PastixSchedStatic = 1, /**< Shared memory with static scheduler */
336  PastixSchedParsec = 2, /**< PaRSEC scheduler */
337  PastixSchedStarPU = 3, /**< StarPU scheduler */
338  PastixSchedDynamic = 4 /**< Shared memory with dynamic scheduler */
340 
341 /**
342  * @brief Ordering strategy
343  */
344 typedef enum pastix_ordering_e {
345  PastixOrderScotch, /**< Use Scotch ordering */
346  PastixOrderMetis, /**< Use Metis ordering */
347  PastixOrderPersonal, /**< Apply user's permutation, or load from file */
348  PastixOrderPtScotch, /**< Use Pt-Scotch ordering */
349  PastixOrderParMetis /**< Use ParMetis ordering */
351 
352 /**
353  * @brief MPI thread mode
354  */
356  PastixMpiNone = 0, /**< No MPI support */
357  PastixMpiThreadSingle = 1, /**< MPI thread single support */
358  PastixMpiThreadFunneled = 2, /**< MPI thread funneled support */
359  PastixMpiThreadSerialized = 3, /**< MPI thread serialized support */
360  PastixMpiThreadMultiple = 4 /**< MPI thread multiple support */
362 
363 /**
364  * @brief Error codes
365  */
366 typedef enum pastix_error_e {
367  PASTIX_SUCCESS = 0, /**< No error */
368  PASTIX_ERR_UNKNOWN = 1, /**< Unknown error */
369  PASTIX_ERR_ALLOC = 2, /**< Allocation error */
370  PASTIX_ERR_NOTIMPLEMENTED = 3, /**< Not implemented feature */
371  PASTIX_ERR_OUTOFMEMORY = 4, /**< Not enough memory */
372  PASTIX_ERR_THREAD = 5, /**< Error with threads */
373  PASTIX_ERR_INTERNAL = 6, /**< Internal error */
374  PASTIX_ERR_BADPARAMETER = 7, /**< Bad parameters given */
375  PASTIX_ERR_FILE = 8, /**< Error in In/Out operations */
376  PASTIX_ERR_INTEGER_TYPE = 9, /**< Error with integer types */
377  PASTIX_ERR_IO = 10, /**< Error with input/output */
378  PASTIX_ERR_MPI = 11 /**< Error with MPI calls */
380 
381 /**
382  * @brief Compression strategy available for IPARM_COMPRESS_WHEN parameter
383  */
385  PastixCompressNever, /**< Do not use compression */
386  PastixCompressWhenBegin, /**< Compress before any numerical operation (Minimal-Memory) */
387  PastixCompressWhenEnd, /**< Compress after contributions were accumulated (Just-In-Time) */
388  PastixCompressWhenDuring /**< Compress after contributions from other supernodes were accumulated */
390 
391 /**
392  * @brief Compression method available for IPARM_COMPRESS_METHOD parameter
393  */
395  PastixCompressMethodSVD, /**< Use singular value decomposition for low-rank compression */
396  PastixCompressMethodPQRCP, /**< Use partial QR with column pivoting for low-rank compression */
397  PastixCompressMethodRQRCP, /**< Use randomized QR with column pivoting for low-rank compression */
398  PastixCompressMethodTQRCP, /**< Use truncated QR with column pivotingfor low-rank compression */
399  PastixCompressMethodRQRRT, /**< Use randomized QR with rotation for low-rank compression */
400  PastixCompressMethodNbr /**< Total number of available compression methods */
402 
403 /**
404  * @brief Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter
405  */
407  PastixCompressOrthoCGS, /**< Orthogonalize low-rank bases with Gram-Schimdt */
408  PastixCompressOrthoQR, /**< Orthogonalize low-rank bases with QR decomposition */
409  PastixCompressOrthoPartialQR /**< Orthogonalize low-rank bases with projections in orthogonal space followed by smaller QR */
411 
412 /**
413  * @brief Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter
414  */
415 typedef enum pastix_split_e {
416  PastixSplitNot, /**< Do not apply dedicated low-rank clustering strategy */
417  PastixSplitKway, /**< Use k-way partitioning */
418  PastixSplitKwayProjections /**< Use projections and k-way in clusters */
420 
421 /**
422  *
423  * @name Constants compatible with CBLAS & LAPACK & PLASMA
424  * @{
425  * The naming and numbering of the following constants is consistent with:
426  *
427  * - CBLAS from Netlib (http://www.netlib.org/blas/blast-forum/cblas.tgz)
428  * - C Interface to LAPACK from Netlib (http://www.netlib.org/lapack/lapwrapc/)
429  * - Plasma (http://icl.cs.utk.edu/plasma/index.html)
430  *
431  */
432 
433 /**
434  * @brief Direction of the matrix storage
435  */
436 typedef enum pastix_layout_e {
437  PastixRowMajor = 101, /**< Storage in row major order */
438  PastixColMajor = 102 /**< Storage in column major order */
440 
441 /**
442  * @brief Transpostion
443  */
444 typedef enum pastix_trans_e {
445  PastixNoTrans = 111, /**< Use A */
446  PastixTrans = 112, /**< Use A^t */
447  PastixConjTrans = 113 /**< Use conj(A^t) */
449 
450 /**
451  * @brief Matrix symmetry type property.
452  *
453  * @remark Must match transposition.
454  *
455  * @sa spm_mtxtype_t
456  */
457 typedef spm_mtxtype_t pastix_mtxtype_t;
458 #define PastixGeneral SpmGeneral /**< The matrix is general */
459 #define PastixSymmetric SpmSymmetric /**< The matrix is symmetric */
460 #define PastixHermitian SpmHermitian /**< The matrix is hermitian */
461 
462 /**
463  * @brief Upper/Lower part
464  */
465 typedef enum pastix_uplo_e {
466  PastixUpper = 121, /**< Use lower triangle of A */
467  PastixLower = 122, /**< Use upper triangle of A */
468  PastixUpperLower = 123 /**< Use the full A */
470 
471 /**
472  * @brief Data blocks used in the kernel
473  *
474  * @warning Must be 0 and 1 respectively for Left and Upper as is it used to
475  * shift the pointers in the kernels from the lower to upper part.
476  */
477 typedef enum pastix_coefside_e {
478  PastixLCoef = 0, /**< Coefficients of the lower triangular L are used */
479  PastixUCoef = 1, /**< Coefficients of the upper triangular U are used */
480  PastixLUCoef = 2 /**< Coefficients of the upper/lower triangular U/L are used */
482 
483 /**
484  * @brief Diagonal
485  */
486 typedef enum pastix_diag_e {
487  PastixNonUnit = 131, /**< Diagonal is non unitary */
488  PastixUnit = 132 /**< Diagonal is unitary */
490 
491 /**
492  * @brief Side of the operation
493  */
494 typedef enum pastix_side_e {
495  PastixLeft = 141, /**< Apply operator on the left */
496  PastixRight = 142 /**< Apply operator on the right */
498 
499 /**
500  * @brief Norms
501  */
502 typedef enum pastix_normtype_e {
503  PastixOneNorm = 171, /**< One norm: max_j( sum_i( |a_{ij}| ) ) */
504  PastixFrobeniusNorm = 174, /**< Frobenius norm: sqrt( sum_{i,j} (a_{ij}^2) ) */
505  PastixInfNorm = 175, /**< Inifinite norm: max_i( sum_j( |a_{ij}| ) ) */
506  PastixMaxNorm = 177 /**< Inifinite norm: max_{i,j}( | a_{ij} | ) */
508 
509 /**
510  * @brief Direction
511  */
512 typedef enum pastix_dir_e {
513  PastixDirForward = 391, /**< Forward direction */
514  PastixDirBackward = 392 /**< Backward direction */
516 
517 /**
518  * @}
519  */
520 
521 END_C_DECLS
522 
523 #endif /* _pastix_api_h_ */
524 
525 /**
526  * @}
527  */
pastix_normtype_e
Norms.
Definition: api.h:502
enum pastix_split_e pastix_split_t
Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter.
spm_coeftype_t pastix_coeftype_t
Arithmetic types.
Definition: api.h:294
pastix_refine_e
Iterative refinement algorithms.
Definition: api.h:276
BEGIN_C_DECLS enum pastix_iparm_e pastix_iparm_t
Integer parameters.
pastix_io_e
IO strategy for graph and ordering.
Definition: api.h:228
enum pastix_dparm_e pastix_dparm_t
Float parameters.
enum pastix_refine_e pastix_refine_t
Iterative refinement algorithms.
enum pastix_diag_e pastix_diag_t
Diagonal.
spm_mtxtype_t pastix_mtxtype_t
Matrix symmetry type property.
Definition: api.h:457
enum pastix_normtype_e pastix_normtype_t
Norms.
pastix_dir_e
Direction.
Definition: api.h:512
enum pastix_compress_ortho_e pastix_compress_ortho_t
Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter.
pastix_factotype_e
Factorization algorithms available for IPARM_FACTORIZATION parameter.
Definition: api.h:309
pastix_dparm_e
Float parameters.
Definition: api.h:159
pastix_coefside_e
Data blocks used in the kernel.
Definition: api.h:477
pastix_compress_ortho_e
Orthogonalization method available for IPARM_COMPRESS_ORTHO parameter.
Definition: api.h:406
pastix_task_e
Main steps for the pastix() interface.
Definition: api.h:195
enum pastix_dir_e pastix_dir_t
Direction.
pastix_solv_mode_e
Solve Schur modes.
Definition: api.h:267
enum pastix_trace_e pastix_trace_t
Steps to trace.
pastix_compress_when_e
Compression strategy available for IPARM_COMPRESS_WHEN parameter.
Definition: api.h:384
pastix_iparm_e
Integer parameters.
Definition: api.h:35
pastix_ordering_e
Ordering strategy.
Definition: api.h:344
enum pastix_solv_mode_e pastix_solv_mode_t
Solve Schur modes.
enum pastix_error_e pastix_error_t
Error codes.
enum pastix_uplo_e pastix_uplo_t
Upper/Lower part.
pastix_uplo_e
Upper/Lower part.
Definition: api.h:465
enum pastix_factolookside_e pastix_factolookside_t
Factorization looking side available for IPARM_FACTO_LOOK_SIDE parameter.
enum pastix_compress_when_e pastix_compress_when_t
Compression strategy available for IPARM_COMPRESS_WHEN parameter.
pastix_side_e
Side of the operation.
Definition: api.h:494
pastix_diag_e
Diagonal.
Definition: api.h:486
pastix_trans_e
Transpostion.
Definition: api.h:444
enum pastix_ordering_e pastix_ordering_t
Ordering strategy.
enum pastix_fact_mode_e pastix_fact_mode_t
Factorization Schur modes.
pastix_mpithreadmode_e
MPI thread mode.
Definition: api.h:355
enum pastix_compress_method_e pastix_compress_method_t
Compression method available for IPARM_COMPRESS_METHOD parameter.
pastix_verbose_e
Verbose modes.
Definition: api.h:219
pastix_scheduler_e
Scheduler.
Definition: api.h:333
pastix_error_e
Error codes.
Definition: api.h:366
enum pastix_scheduler_e pastix_scheduler_t
Scheduler.
pastix_layout_e
Direction of the matrix storage.
Definition: api.h:436
enum pastix_task_e pastix_task_t
Main steps for the pastix() interface.
enum pastix_side_e pastix_side_t
Side of the operation.
pastix_split_e
Splitting strategy available for IPARM_SPLITTING_STRATEGY parameter.
Definition: api.h:415
pastix_fact_mode_e
Factorization Schur modes.
Definition: api.h:243
enum pastix_layout_e pastix_layout_t
Direction of the matrix storage.
enum pastix_verbose_e pastix_verbose_t
Verbose modes.
pastix_compress_method_e
Compression method available for IPARM_COMPRESS_METHOD parameter.
Definition: api.h:394
enum pastix_factotype_e pastix_factotype_t
Factorization algorithms available for IPARM_FACTORIZATION parameter.
pastix_factolookside_e
Factorization looking side available for IPARM_FACTO_LOOK_SIDE parameter.
Definition: api.h:325
enum pastix_io_e pastix_io_t
IO strategy for graph and ordering.
enum pastix_trans_e pastix_trans_t
Transpostion.
pastix_trace_e
Steps to trace.
Definition: api.h:209
enum pastix_mpithreadmode_e pastix_mpithreadmode_t
MPI thread mode.
enum pastix_coefside_e pastix_coefside_t
Data blocks used in the kernel.
@ PastixInfNorm
Definition: api.h:505
@ PastixOneNorm
Definition: api.h:503
@ PastixFrobeniusNorm
Definition: api.h:504
@ PastixMaxNorm
Definition: api.h:506
@ PastixRefineCG
Definition: api.h:278
@ PastixRefineGMRES
Definition: api.h:277
@ PastixRefineSR
Definition: api.h:279
@ PastixRefineBiCGSTAB
Definition: api.h:280
@ PastixIOLoadCSC
Definition: api.h:234
@ PastixIOLoadGraph
Definition: api.h:232
@ PastixIOSave
Definition: api.h:231
@ PastixIONo
Definition: api.h:229
@ PastixIOLoad
Definition: api.h:230
@ PastixIOSaveCSC
Definition: api.h:235
@ PastixIOSaveGraph
Definition: api.h:233
@ PastixDirForward
Definition: api.h:513
@ PastixDirBackward
Definition: api.h:514
@ PastixFactLDLH
Definition: api.h:319
@ PastixFactLDLT
Definition: api.h:316
@ PastixFactPXTRF
Definition: api.h:313
@ PastixFactLLH
Definition: api.h:315
@ PastixFactHETRF
Definition: api.h:314
@ PastixFactPOTRF
Definition: api.h:310
@ PastixFactSYTRF
Definition: api.h:311
@ PastixFactGETRF
Definition: api.h:312
@ PastixFactLU
Definition: api.h:317
@ PastixFactLLT
Definition: api.h:318
@ DPARM_SOLV_RLFLOPS
Definition: api.h:180
@ DPARM_REORDER_TIME
Definition: api.h:166
@ DPARM_PRED_FACT_TIME
Definition: api.h:169
@ DPARM_FACT_THFLOPS
Definition: api.h:172
@ DPARM_BLEND_TIME
Definition: api.h:167
@ DPARM_EPSILON_MAGN_CTRL
Definition: api.h:163
@ DPARM_REFINE_TIME
Definition: api.h:182
@ DPARM_EPSILON_REFINEMENT
Definition: api.h:161
@ DPARM_A_NORM
Definition: api.h:183
@ DPARM_SOLV_FLOPS
Definition: api.h:178
@ DPARM_FILL_IN
Definition: api.h:160
@ DPARM_MEM_FR
Definition: api.h:175
@ DPARM_ANALYZE_TIME
Definition: api.h:168
@ DPARM_FACT_TIME
Definition: api.h:170
@ DPARM_FACT_RLFLOPS
Definition: api.h:173
@ DPARM_RELATIVE_ERROR
Definition: api.h:162
@ DPARM_MEM_LR
Definition: api.h:176
@ DPARM_COMPRESS_TOLERANCE
Definition: api.h:184
@ DPARM_ORDER_TIME
Definition: api.h:164
@ DPARM_FACT_FLOPS
Definition: api.h:171
@ DPARM_FACT_ENERGY
Definition: api.h:174
@ DPARM_COMPRESS_MIN_RATIO
Definition: api.h:185
@ DPARM_SOLV_TIME
Definition: api.h:177
@ DPARM_SYMBFACT_TIME
Definition: api.h:165
@ DPARM_SOLV_THFLOPS
Definition: api.h:179
@ DPARM_SOLV_ENERGY
Definition: api.h:181
@ PastixLCoef
Definition: api.h:478
@ PastixLUCoef
Definition: api.h:480
@ PastixUCoef
Definition: api.h:479
@ PastixCompressOrthoQR
Definition: api.h:408
@ PastixCompressOrthoPartialQR
Definition: api.h:409
@ PastixCompressOrthoCGS
Definition: api.h:407
@ PastixTaskRefine
Definition: api.h:202
@ PastixTaskInit
Definition: api.h:196
@ PastixTaskSymbfact
Definition: api.h:198
@ PastixTaskOrdering
Definition: api.h:197
@ PastixTaskSolve
Definition: api.h:201
@ PastixTaskAnalyze
Definition: api.h:199
@ PastixTaskClean
Definition: api.h:203
@ PastixTaskNumfact
Definition: api.h:200
@ PastixCompressWhenBegin
Definition: api.h:386
@ PastixCompressWhenEnd
Definition: api.h:387
@ PastixCompressNever
Definition: api.h:385
@ PastixCompressWhenDuring
Definition: api.h:388
@ IPARM_FACTORIZATION
Definition: api.h:99
@ IPARM_SCHUR_FACT_MODE
Definition: api.h:103
@ IPARM_MODIFY_PARAMETER
Definition: api.h:146
@ IPARM_COMPRESS_WHEN
Definition: api.h:131
@ IPARM_REFINEMENT
Definition: api.h:111
@ IPARM_COMPRESS_MIN_WIDTH
Definition: api.h:129
@ IPARM_METIS_SEED
Definition: api.h:70
@ IPARM_MIXED
Definition: api.h:139
@ IPARM_MPI_THREAD_LEVEL
Definition: api.h:143
@ IPARM_TASKS2D_LEVEL
Definition: api.h:90
@ IPARM_METIS_NO2HOP
Definition: api.h:63
@ IPARM_FREE_CSCUSER
Definition: api.h:102
@ IPARM_MTX_TYPE
Definition: api.h:150
@ IPARM_GPU_NBR
Definition: api.h:123
@ IPARM_APPLYPERM_WS
Definition: api.h:108
@ IPARM_METIS_NITER
Definition: api.h:65
@ IPARM_SCOTCH_FRAT
Definition: api.h:58
@ IPARM_SCOTCH_CMAX
Definition: api.h:57
@ IPARM_STATIC_PIVOTING
Definition: api.h:101
@ IPARM_FACTO_LOOK_SIDE
Definition: api.h:100
@ IPARM_START_TASK
Definition: api.h:147
@ IPARM_GPU_MEMORY_BLOCK_SIZE
Definition: api.h:125
@ IPARM_DOF_NBR
Definition: api.h:151
@ IPARM_COMPRESS_MIN_HEIGHT
Definition: api.h:130
@ IPARM_MIN_BLOCKSIZE
Definition: api.h:88
@ IPARM_COMPRESS_ILUK
Definition: api.h:136
@ IPARM_TASKS2D_WIDTH
Definition: api.h:91
@ IPARM_SCHEDULER
Definition: api.h:117
@ IPARM_COMPRESS_METHOD
Definition: api.h:132
@ IPARM_SCOTCH_MT
Definition: api.h:54
@ IPARM_AMALGAMATION_LVLBLAS
Definition: api.h:74
@ IPARM_FLOAT
Definition: api.h:149
@ IPARM_SPLITTING_PROJECTIONS_DISTANCE
Definition: api.h:84
@ IPARM_ORDERING
Definition: api.h:50
@ IPARM_ORDERING_DEFAULT
Definition: api.h:51
@ IPARM_GMRES_IM
Definition: api.h:114
@ IPARM_METIS_COMPRESS
Definition: api.h:67
@ IPARM_GPU_MEMORY_PERCENTAGE
Definition: api.h:124
@ IPARM_SCOTCH_SWITCH_LEVEL
Definition: api.h:55
@ IPARM_ITERMAX
Definition: api.h:113
@ IPARM_METIS_DBGLVL
Definition: api.h:71
@ IPARM_NNZEROS_BLOCK_LOCAL
Definition: api.h:41
@ IPARM_VERBOSE
Definition: api.h:36
@ IPARM_METIS_RTYPE
Definition: api.h:62
@ IPARM_REORDERING_STOP
Definition: api.h:79
@ IPARM_FTZ
Definition: api.h:140
@ IPARM_COMPRESS_ORTHO
Definition: api.h:133
@ IPARM_METIS_PFACTOR
Definition: api.h:69
@ IPARM_COMPRESS_RELTOL
Definition: api.h:134
@ IPARM_AUTOSPLIT_COMM
Definition: api.h:120
@ IPARM_ALLOCATED_TERMS
Definition: api.h:42
@ IPARM_SCOTCH_CMIN
Definition: api.h:56
@ IPARM_NBITER
Definition: api.h:112
@ IPARM_MAX_BLOCKSIZE
Definition: api.h:89
@ IPARM_SPLITTING_LEVELS_PROJECTIONS
Definition: api.h:81
@ IPARM_REORDERING_SPLIT
Definition: api.h:78
@ IPARM_NNZEROS
Definition: api.h:40
@ IPARM_END_TASK
Definition: api.h:148
@ IPARM_SOCKET_NBR
Definition: api.h:119
@ IPARM_METIS_NSEPS
Definition: api.h:64
@ IPARM_AMALGAMATION_LVLCBLK
Definition: api.h:75
@ IPARM_METIS_UFACTOR
Definition: api.h:66
@ IPARM_SPLITTING_STRATEGY
Definition: api.h:80
@ IPARM_ALLCAND
Definition: api.h:92
@ IPARM_SPLITTING_LEVELS_KWAY
Definition: api.h:82
@ IPARM_METIS_CCORDER
Definition: api.h:68
@ IPARM_SPLITTING_PROJECTIONS_WIDTH
Definition: api.h:85
@ IPARM_SPLITTING_PROJECTIONS_DEPTH
Definition: api.h:83
@ IPARM_IO_STRATEGY
Definition: api.h:37
@ IPARM_LEVEL_OF_FILL
Definition: api.h:96
@ IPARM_METIS_CTYPE
Definition: api.h:61
@ IPARM_SCHUR_SOLV_MODE
Definition: api.h:107
@ IPARM_PRODUCE_STATS
Definition: api.h:43
@ IPARM_INCOMPLETE
Definition: api.h:95
@ IPARM_MC64
Definition: api.h:47
@ IPARM_TRACE
Definition: api.h:44
@ IPARM_COMPRESS_PRESELECT
Definition: api.h:135
@ IPARM_GLOBAL_ALLOCATION
Definition: api.h:126
@ IPARM_TRANSPOSE_SOLVE
Definition: api.h:106
@ IPARM_THREAD_NBR
Definition: api.h:118
@ PastixOrderPersonal
Definition: api.h:347
@ PastixOrderParMetis
Definition: api.h:349
@ PastixOrderScotch
Definition: api.h:345
@ PastixOrderMetis
Definition: api.h:346
@ PastixOrderPtScotch
Definition: api.h:348
@ PastixUpper
Definition: api.h:466
@ PastixUpperLower
Definition: api.h:468
@ PastixLower
Definition: api.h:467
@ PastixRight
Definition: api.h:496
@ PastixLeft
Definition: api.h:495
@ PastixUnit
Definition: api.h:488
@ PastixNonUnit
Definition: api.h:487
@ PastixConjTrans
Definition: api.h:447
@ PastixNoTrans
Definition: api.h:445
@ PastixTrans
Definition: api.h:446
@ PastixMpiNone
Definition: api.h:356
@ PastixMpiThreadSingle
Definition: api.h:357
@ PastixMpiThreadMultiple
Definition: api.h:360
@ PastixMpiThreadFunneled
Definition: api.h:358
@ PastixMpiThreadSerialized
Definition: api.h:359
@ PastixVerboseYes
Definition: api.h:222
@ PastixVerboseNot
Definition: api.h:220
@ PastixVerboseNo
Definition: api.h:221
@ PastixSchedStatic
Definition: api.h:335
@ PastixSchedDynamic
Definition: api.h:338
@ PastixSchedSequential
Definition: api.h:334
@ PastixSchedStarPU
Definition: api.h:337
@ PastixSchedParsec
Definition: api.h:336
@ PASTIX_ERR_IO
Definition: api.h:377
@ PASTIX_ERR_NOTIMPLEMENTED
Definition: api.h:370
@ PASTIX_ERR_INTERNAL
Definition: api.h:373
@ PASTIX_ERR_UNKNOWN
Definition: api.h:368
@ PASTIX_ERR_INTEGER_TYPE
Definition: api.h:376
@ PASTIX_ERR_MPI
Definition: api.h:378
@ PASTIX_ERR_OUTOFMEMORY
Definition: api.h:371
@ PASTIX_SUCCESS
Definition: api.h:367
@ PASTIX_ERR_ALLOC
Definition: api.h:369
@ PASTIX_ERR_THREAD
Definition: api.h:372
@ PASTIX_ERR_FILE
Definition: api.h:375
@ PASTIX_ERR_BADPARAMETER
Definition: api.h:374
@ PastixRowMajor
Definition: api.h:437
@ PastixColMajor
Definition: api.h:438
@ PastixSplitNot
Definition: api.h:416
@ PastixSplitKway
Definition: api.h:417
@ PastixSplitKwayProjections
Definition: api.h:418
@ PastixCompressMethodSVD
Definition: api.h:395
@ PastixCompressMethodTQRCP
Definition: api.h:398
@ PastixCompressMethodRQRRT
Definition: api.h:399
@ PastixCompressMethodNbr
Definition: api.h:400
@ PastixCompressMethodRQRCP
Definition: api.h:397
@ PastixCompressMethodPQRCP
Definition: api.h:396
@ PastixFactRightLooking
Definition: api.h:327
@ PastixFactLeftLooking
Definition: api.h:326
@ PastixTraceFactAndSolve
Definition: api.h:213
@ PastixTraceNumfact
Definition: api.h:211
@ PastixTraceSolve
Definition: api.h:212
@ PastixTraceNot
Definition: api.h:210