PaStiX Handbook 6.4.0
Loading...
Searching...
No Matches
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-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
12 * Univ. Bordeaux. All rights reserved.
13 *
14 * @version 6.4.0
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 2024-07-05
22 *
23 * @addtogroup pastix_api
24 * @{
25 *
26 **/
27#ifndef _pastix_api_h_
28#define _pastix_api_h_
29
30BEGIN_C_DECLS
31
32/**
33 * @brief Integer parameters
34 */
35typedef 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 */
159typedef 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 */
195typedef 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 */
209typedef 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 */
219typedef 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 */
228typedef 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 */
243typedef 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 */
267typedef enum pastix_solv_mode_e {
268 PastixSolvModeLocal = 0,
269 PastixSolvModeInterface = 1,
270 PastixSolvModeSchur = 2
272
273/**
274 * @brief Iterative refinement algorithms
275 */
276typedef 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 */
294typedef 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 */
309typedef 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 */
333typedef 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 */
344typedef 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 */
366typedef 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 */
415typedef 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 */
436typedef 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 */
444typedef 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 */
457typedef 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 */
465typedef 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 */
477typedef 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 */
486typedef 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 */
494typedef 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 */
502typedef 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 */
512typedef enum pastix_dir_e {
513 PastixDirForward = 391, /**< Forward direction */
514 PastixDirBackward = 392 /**< Backward direction */
516
517/**
518 * @}
519 */
520
521END_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