Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

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: 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: 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 (= 1) or return the permutation from the solver (= 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, > 0, and
iparm
[35]
= 0.
To specify elements for a Schur complement, set
iparm
[4]
= 0, = 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]
.
Unless you have specified low rank update, 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 fills
iparm
[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 =1.
in/out
x
[
n
*
nrhs
]
void*
Solution vectors
*
On output, if =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.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804