Visible to Intel only — GUID: GUID-E1E2E435-241F-47CB-83D5-9322CA21473E
Visible to Intel only — GUID: GUID-E1E2E435-241F-47CB-83D5-9322CA21473E
oneMKL PARDISO Parameters in Tabular Form
The following table lists all parameters of Intel® oneAPI Math Kernel Library PARDISO and gives their brief descriptions.
Parameter | Type | Description | Values | Comments | In/Out |
---|---|---|---|---|---|
pt(64) | INTEGER on 32-bit architectures, INTEGER*8 on 64-bit architectures TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) |
Solver internal data address pointer |
0 | Must be initialized with zeros and never be modified later |
in/out |
maxfct | INTEGER INTEGER, INTENT(IN) |
Maximal number of factors in memory |
>0 | Generally used value is 1 |
in |
mnum | INTEGER INTEGER, INTENT(IN) |
The number of matrix (from 1 to maxfct) to solve |
[1: maxfct] |
Generally used value is 1 |
in |
mtype | INTEGER INTEGER, INTENT(IN) |
Matrix type |
1 | Real and structurally symmetric |
in |
2 | Real and symmetric positive definite |
||||
-2 | Real and symmetric indefinite |
||||
3 | Complex and structurally symmetric |
||||
4 | Complex and Hermitian positive definite |
||||
-4 | Complex and Hermitian indefinite |
||||
6 | Complex and symmetric matrix |
||||
11 | Real and nonsymmetric matrix |
||||
13 | Complex and nonsymmetric matrix |
||||
phase | INTEGER INTEGER, INTENT(IN) |
Controls the execution of the solver For iparm(36) > 0, phases 331, 332, and 333 perform a different decomposition. See the phase parameter of pardiso for details. |
11 | Analysis |
in |
12 | Analysis, numerical factorization |
||||
13 | Analysis, numerical factorization, solve |
||||
22 | Numerical factorization |
||||
23 | Numerical factorization, solve |
||||
33 | Solve, iterative refinement |
||||
331 | phase=33, but only forward substitution |
||||
332 | phase=33, but only diagonal substitution |
||||
333 | phase=33, but only backward substitution |
||||
0 | Release internal memory for L and U of the matrix number mnum |
||||
-1 | Release all internal memory for all matrices |
||||
n | INTEGER INTEGER, INTENT(IN) |
Number of equations in the sparse linear system A*X = B |
>0 | in | |
a(*) | PARDISO_DATA_TYPE1) PARDISO_DATA_TYPE1), INTENT(IN) |
Contains the non-zero elements of the coefficient matrix A |
* | The size of a is the same as that of ja, and the coefficient matrix can be either real or complex. The matrix must be stored in the 3-array variation of compressed sparse row (CSR3) format with increasing values of ja for each row |
in |
ia(n + 1) | INTEGER INTEGER, INTENT(IN) |
rowIndex array in CSR3 format |
>=0 | ia(i) gives the index of the element in array a that contains the first non-zero element from row i of A. The last element ia(n+1) (for one-based indexing) or ia(n)(for zero-based indexing) is taken to be equal to the number of non-zero elements in A, plus one. Note: iparm(35) indicates whether row/column indexing starts from 1 or 0. |
in |
ja(*) | INTEGER INTEGER, INTENT(IN) |
columns array in CSR3 format |
>=0 | The column indices for each row of A must be sorted in increasing order. For structurally symmetric matrices zero diagonal elements must be stored in a and ja. Zero diagonal elements should be stored for symmetric matrices, although they are not required. For symmetric matrices, the solver needs only the upper triangular part of the system. Note: iparm(35) indicates whether row/column indexing starts from 1 or 0. |
in |
perm(n) | INTEGER INTEGER, INTENT(INOUT) |
Holds the permutation vector of size n, specifies elements used for computing a partial solution, or specifies differing values of the input matrices for low rank update |
>=0 | You can apply your own fill-in reducing ordering (iparm(5)= 1) or return the permutation from the solver (iparm(5)= 2 ). Let C = P*A*PT be the permuted matrix. Row (column) i of C is the perm(i) row (column) of A. The numbering of the array must describe a permutation. To specify elements for a partial solution, set iparm(5)= 0, iparm(31)> 0, and iparm(36)= 0. To specify elements for a Schur complement, set iparm(5)= 0, iparm(31)= 0, and iparm(36)> 0. To specify values that differ in A for low rank update (see Low Rank Update), set iparm(39) = 1. The size of the array must be at least 2*ndiff + 1, where ndiff is the number of values of A that are different. The values of perm should be: perm = {ndiff, row_index1, column_index1, row_index2, column_index2, ...., row_index_ndiff, column_index_ndiff}where row_index_m and column_index_m are the row and column indices of the m-th differing non-zero value in matrix A. The row and column index pairs can be in any order, but must use zero-based indexing regardless of the value of iparm(35).
NOTE:
Unless you have specified low rank update, iparm(35) indicates whether row/column indexing starts from 1 or 0. |
in/out |
nrhs | INTEGER INTEGER, INTENT(IN) |
Number of right-hand sides that need to be solved for |
>=0 | Generally used value is 1 To obtain better Intel® oneAPI Math Kernel Library PARDISO performance, during the numerical factorization phase you can provide the maximum number of right-hand sides, which can be used further during the solving phase. |
in |
iparm(64) | INTEGER INTEGER, INTENT(INOUT) |
This array is used to pass various parameters to Intel® oneAPI Math Kernel Library PARDISO and to return some useful information after execution of the solver (see pardiso iparm Parameter for more details) |
* | If iparm(1)=0, Intel® oneAPI Math Kernel Library PARDISO fillsiparm(2) through iparm(64) with default values and uses them. |
in/out |
msglvl | INTEGER INTEGER, INTENT(IN) |
Message level information |
0 | Intel® oneAPI Math Kernel Library PARDISO generates no output |
in |
1 | Intel® oneAPI Math Kernel Library PARDISO prints statistical information |
||||
b(n*nrhs) | PARDISO_DATA_TYPE1) PARDISO_DATA_TYPE1), INTENT(INOUT) |
Right-hand side vectors |
* | On entry, contains the right-hand side vector/matrix B, which is placed contiguously in memory. The b(i+(k-1)×nrhs) element must hold the i-th component of k-th right-hand side vector. Note that b is only accessed in the solution phase. On output, the array is replaced with the solution if iparm(6)=1. |
in/out |
x(n*nrhs) | PARDISO_DATA_TYPE1) PARDISO_DATA_TYPE1), INTENT(OUT) |
Solution vectors |
* | On output, if iparm(6)=0, contains solution vector/matrix X which is placed contiguously in memory. The x(i+(k-1)×nrhs) element must hold the i-th component of k-th solution vector. Note that x is only accessed in the solution phase. |
out |
error | INTEGER INTEGER, INTENT(OUT) |
Error indicator |
0 | No error |
out |
-1 | Input inconsistent |
||||
-2 | Not enough memory |
||||
-3 | Reordering problem |
||||
-4 | Zero pivot, numerical factorization or iterative refinement problem |
||||
-5 | Unclassified (internal) error |
||||
-6 | Reordering failed (matrix types 11 and 13 only) |
||||
-7 | Diagonal matrix is singular |
||||
-8 | 32-bit integer overflow problem |
||||
-9 | Not enough memory for OOC |
||||
-10 | Problems with opening OOC temporary files |
||||
-11 | Read/write problems with the OOC data file |
1) See description of PARDISO_DATA_TYPE in PARDISO_DATA_TYPE.