Developer Reference for Intel® oneAPI Math Kernel Library for C
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 in/out |
void * |
Solver internal data address pointer |
0 Must be initialized with zeros and never be modified later |
maxfct in |
MKL_INT * |
Maximal number of factors in memory |
\(>0\) Generally used value is 1 |
mnum in |
MKL_INT * |
The number of matrix (from 1 to maxfct ) to solve |
[1: maxfct ] Generally used value is 1 |
mtype in |
MKL_INT * |
Matrix type |
|
phase in |
MKL_INT * |
Controls the execution of the solver For iparm[35] > 0, phases 331, 332, and 333 perform a different decomposition. See the phase parameter of pardiso for details. |
|
n in |
MKL_INT * |
Number of equations in the sparse linear system A * X = B |
\(>0\) |
a in |
void * |
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] in |
MKL_INT * |
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] (for zero-based indexing) or ia[n+1] (for one-based indexing) is taken to be equal to the number of non-zero elements in A , plus one . Note: iparm[34] indicates whether row/column indexing starts from 1 or 0. |
ja in |
MKL_INT * |
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[34] indicates whether row/column indexing starts from 1 or 0. |
perm[n] in/out |
MKL_INT * |
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[4] = 1) or return the permutation from the solver ( iparm[4] = 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[4] = 0, iparm[30] > 0, and iparm[35] = 0. To specify elements for a Schur complement, set iparm[4] = 0, iparm[30] = 0, and iparm[35] > 0. To specify values that differ in A for low rank update (see Low Rank Update ), set iparm[38] = 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[34].
NOTE:
Unless you have specified low rank update, iparm[34] indicates whether row/column indexing starts from 1 or 0.
|
nrhs in |
MKL_INT * |
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 |
MKL_INT * |
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[0] =0 , PARDISO fills iparm[1] through iparm[63] with default values and uses them. |
msglvl in |
MKL_INT * |
Message level information |
|
b[n*nrhs] in/out |
void * |
Right-hand side vectors |
* On entry, contains the right-hand side vector/matrix B , which is placed contiguously in memory. The b[i+k*n] 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[5] =1. |
x[n*nrhs] out |
void * |
Solution vectors |
* On output, if iparm[5] =0, contains solution vector/matrix X which is placed contiguously in memory. The x[i+k*n] element must hold the i -th component of k -th solution vector. Note that x is only accessed in the solution phase. |
error out |
MKL_INT * |
Error indicator |
|
- [1]
-
See description of PARDISO_DATA_TYPE in PARDISO_DATA_TYPE .