Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
Intel® oneMKL PARDISO Parameters in Tabular Form
The following table lists all parameters of Intel® oneAPI Math Kernel Library (oneMKL) PARDISO and gives their brief descriptions.
Parameter |
Type |
Description |
Values |
|---|---|---|---|
pt(64) in/out |
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 |
maxfct in |
INTEGER INTEGER , INTENT(IN) |
Maximal number of factors in memory |
\(>0\) Generally used value is 1 |
mnum in |
INTEGER INTEGER , INTENT(IN) |
The number of matrix (from 1 to maxfct ) to solve |
[1: maxfct ] Generally used value is 1 |
mtype in |
INTEGER INTEGER , INTENT(IN) |
Matrix type |
|
phase in |
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. |
|
n in |
INTEGER INTEGER , INTENT(IN) |
Number of equations in the sparse linear system A * X = B |
\(>0\) |
a(*) in |
PARDISO_DATA_TYPE1 PARDISO_DATA_TYPE, INTENT(IN)1 |
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 |
ia(n + 1) in |
INTEGER INTEGER , INTENT(IN) |
rowIndex array in CSR3 format |
\(\ge 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. |
ja(*) in |
INTEGER INTEGER , INTENT(IN) |
columns array in CSR3 format |
\(\ge 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. |
perm(n) in/out |
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 |
\(\ge 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*P^{T} 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.
|
nrhs in |
INTEGER INTEGER , INTENT(IN) |
Number of right-hand sides that need to be solved for |
\(\ge 0\) Generally used value is 1 To obtain better Intel® oneMKL 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. |
iparm(64) in/out |
INTEGER INTEGER , INTENT(INOUT) |
This array is used to pass various parameters to Intel® oneMKL PARDISO and to return some useful information after execution of the solver (see pardiso iparm Parameter for more details) |
* If iparm(1) =0 , PARDISO fills iparm(2) through iparm(64) with default values and uses them. |
msglvl in |
INTEGER INTEGER , INTENT(IN) |
Message level information |
|
b(n*nrhs) in/out |
PARDISO_DATA_TYPE1 PARDISO_DATA_TYPE, INTENT(INOUT)1 |
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. |
x(n*nrhs) out |
PARDISO_DATA_TYPE1 PARDISO_DATA_TYPE, INTENT(OUT)1 |
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. |
error out |
INTEGER INTEGER , INTENT(OUT) |
Error indicator |
|
- [1]
-
See description of PARDISO_DATA_TYPE in PARDISO_DATA_TYPE .