Intel® oneAPI Math Kernel Library Developer Reference - C

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

void*

Solver internal data address pointer

0

Must be initialized with zeros and never be modified later

in/out
maxfct

MKL_INT*

Maximal number of factors in memory

>0

Generally used value is 1

in
mnum

MKL_INT*

The number of matrix (from 1 to maxfct) to solve

[1: maxfct]

Generally used value is 1

in
mtype

MKL_INT*

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

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.

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

MKL_INT*

Number of equations in the sparse linear system A*X = B

>0   in
a

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

in
ia[n ]

MKL_INT*

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) is taken to be equal to the number of non-zero elements in A.

Note: iparm[34] indicates whether row/column indexing starts from 1 or 0.

in
ja

MKL_INT*

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[34] indicates whether row/column indexing starts from 1 or 0.

in
perm[n ]

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

>=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*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[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.

in/out
nrhs

MKL_INT*

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]

MKL_INT*

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[0]=0, Intel® oneAPI Math Kernel Library PARDISO fillsiparm[1] through iparm[63] with default values and uses them.

in/out
msglvl

MKL_INT*

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]

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.

in/out
x[n*nrhs]

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.

out
error

MKL_INT*

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.