Developer Reference

Contents

pardiso iparm Parameter

This table describes all individual components of the
Intel® MKL
PARDISO
iparm
parameter. Components which are not used must be initialized with 0. Default values are denoted with an asterisk (*).
Component
Description
iparm
[0]
input
Use default values.
0
iparm
[1]
-
iparm
[63]
are filled with default values.
0
You must supply all values in components
iparm
[1]
-
iparm
[63]
.
iparm
[1]
input
Fill-in reducing ordering for the input matrix.
You can control the parallel execution of the solver by explicitly setting the
MKL_NUM_THREADS
environment variable. If fewer OpenMP threads are available than specified, the execution may slow down instead of speeding up. If
MKL_NUM_THREADS
is not defined, then the solver uses all available processors.
0
The minimum degree algorithm [Li99] .
2*
The nested dissection algorithm from the METIS package [Karypis98] .
3
The parallel (OpenMP) version of the nested dissection algorithm. It can decrease the time of computations on multi-core computers, especially when
Intel® MKL
PARDISO Phase 1 takes significant time.
Setting
iparm
[1]
= 3
prevents the use of CNR mode (
iparm
[33]
> 0
) because
Intel® MKL
PARDISO uses dynamic parallelism.
iparm
[2]
Reserved. Set to zero.
iparm
[3]
input
Preconditioned CGS/CG.
This parameter controls preconditioned CGS [Sonn89] for nonsymmetric or structurally symmetric matrices and Conjugate-Gradients for symmetric matrices.
iparm
[3]
has the form
iparm
[3]
=
10*
L
+
K
.
K
=0
The factorization is always computed as required by
phase
.
K
=1
CGS iteration replaces the computation of
LU
. The preconditioner is
LU
that was computed at a previous step (the first step or last step with a failure) in a sequence of solutions needed for identical sparsity patterns.
K
=2
CGS iteration for symmetric positive definite matrices replaces the computation of
LL
T
. The preconditioner is
LL
T
that was computed at a previous step (the first step or last step with a failure) in a sequence of solutions needed for identical sparsity patterns.
The value
L
controls the stopping criterion of the Krylov Subspace iteration:
eps
CGS
= 10
-L
is used in the stopping criterion
||
dx
i
|| / ||
dx
0
|| < eps
CGS
where
||
dx
i
|| = ||inv(
L
*
U
)*
r
i
||
for
K
= 1
or
||
dx
i
|| = ||inv(
L
*
L
T
)*
r
i
||
for
K
= 2
and
r
i
is the residue at iteration
i
of the preconditioned Krylov Subspace iteration.
A maximum number of 150 iterations is fixed with the assumption that the iteration will converge before consuming half the factorization time. Intermediate convergence rates and residue excursions are checked and can terminate the iteration process. If
phase
=23
, then the factorization for a given
A
is automatically recomputed in cases where the Krylov Subspace iteration failed, and the corresponding direct solution is returned. Otherwise the solution from the preconditioned Krylov Subspace iteration is returned. Using
phase
=33
results in an error message (
error
=-4
) if the stopping criteria for the Krylov Subspace iteration can not be reached. More information on the failure can be obtained from
iparm
[19]
.
The default is
iparm
[3]
=0
, and other values are only recommended for an advanced user.
iparm
[3]
must be greater than or equal to zero.
Examples:
iparm
[3]
Description
31
LU
-preconditioned CGS iteration with a stopping criterion of 1.0E-3 for nonsymmetric matrices
61
LU
-preconditioned CGS iteration with a stopping criterion of 1.0E-6 for nonsymmetric matrices
62
LL
T
-preconditioned CGS iteration with a stopping criterion of 1.0E-6 for symmetric positive definite matrices
iparm
[4]
input
User permutation.
This parameter controls whether user supplied fill-in reducing permutation is used instead of the integrated multiple-minimum degree or nested dissection algorithms. Another use of this parameter is to control obtaining the fill-in reducing permutation vector calculated during the reordering stage of
Intel® MKL
PARDISO.
This option is useful for testing reordering algorithms, adapting the code to special applications problems (for instance, to move zero diagonal elements to the end of
P
*
A
*
P
T
), or for using the permutation vector more than once for matrices with identical sparsity structures. For definition of the permutation, see the description of the
perm
parameter.
You can only set one of
iparm
[4]
,
iparm
[30]
, and
iparm
[35]
, so be sure that the
iparm
[30]
(partial solution) and the
iparm
[35]
(Schur complement) parameters are 0 if you set
iparm
[4]
.
0*
User permutation in the
perm
array is ignored.
1
Intel® MKL
PARDISO uses the user supplied fill-in reducing permutation from the
perm
array.
iparm
[1]
is ignored.
Setting
iparm
[4]
= 1 prevents use of a parallel algorithm for the solve step.
2
Intel® MKL
PARDISO returns the permutation vector computed at phase 1 in the
perm
array.
iparm
[5]
input
Write solution on
x
.
The array
x
is always used.
0*
The array
x
contains the solution; right-hand side vector
b
is kept unchanged.
1
The solver stores the solution on the right-hand side
b
.
iparm
[6]
output
Number of iterative refinement steps performed.
Reports the number of iterative refinement steps that were actually performed during the solve step.
iparm
[7]
input
Iterative refinement step.
On entry to the solve and iterative refinement step,
iparm
[7]
must be set to the maximum number of iterative refinement steps that the solver performs.
0*
The solver automatically performs two steps of iterative refinement when perturbed pivots are obtained during the numerical factorization.
>0
Maximum number of iterative refinement steps that the solver performs. The solver performs not more than the absolute value of
iparm
[7]
steps of iterative refinement. The solver might stop the process before the maximum number of steps if
  • a satisfactory level of accuracy of the solution in terms of backward error is achieved,
  • or if it determines that the required accuracy cannot be reached. In this case
    Intel® MKL
    PARDISO returns -4 in the
    error
    parameter.
The number of executed iterations is reported in
iparm
[6]
.
<0
Same as above, but the accumulation of the residuum uses extended precision real and complex data types.
Perturbed pivots result in iterative refinement (independent of
iparm
[7]
=0
) and the number of executed iterations is reported in
iparm
[6]
.
iparm
[8]
Reserved. Set to zero.
iparm
[9]
input
Pivoting perturbation.
This parameter instructs
Intel® MKL
PARDISO how to handle small pivots or zero pivots for nonsymmetric matrices (
mtype
=11
or
mtype
=13
) and symmetric matrices (
mtype
=-2
,
mtype
=-4
, or
mtype
=6
). For these matrices the solver uses a complete supernode pivoting approach. When the factorization algorithm reaches a point where it cannot factor the supernodes with this pivoting strategy, it uses a pivoting perturbation strategy similar to [Li99] , [Schenk04] .
Small pivots are perturbed with
eps = 10
-
iparm
[9]
.
The magnitude of the potential pivot is tested against a constant threshold of
alpha = eps*||
A2
||
inf
,
where
eps = 10
(-
iparm
[9]
)
,
A2
=
P
*
P
MPS
*
D
r
*
A
*
D
c
*
P
, and
||
A2
||
inf
is the infinity norm of the scaled and permuted matrix
A
. Any tiny pivots encountered during elimination are set to the sign
(
l
I
I
)*eps*||
A2
||
inf
, which trades off some numerical stability for the ability to keep pivots from getting too small. Small pivots are therefore perturbed with
eps = 10
(-
iparm
[9]
)
.
13*
The default value for nonsymmetric matrices(
mtype
=11,
mtype
=13),
eps = 10
-13
.
8*
The default value for symmetric indefinite matrices (
mtype
=-2,
mtype
=-4,
mtype
=6),
eps = 10
-8
.
iparm
[10]
input
Scaling vectors.
Intel® MKL
PARDISO uses a maximum weight matching algorithm to permute large elements on the diagonal and to scale so that the diagonal elements are equal to 1 and the absolute values of the off-diagonal entries are less than or equal to 1. This scaling method is applied only to nonsymmetric matrices (
mtype
= 11 or
mtype
= 13). The scaling can also be used for symmetric indefinite matrices (
mtype
= -2,
mtype
=-4, or
mtype
= 6) when the symmetric weighted matchings are applied (
iparm
[12]
= 1).
Use
iparm
[10]
= 1 (scaling) and
iparm
[12]
= 1 (matching) for highly indefinite symmetric matrices, for example, from interior point optimizations or saddle point problems. Note that in the analysis phase (
phase
=11
) you must provide the numerical values of the matrix
A
in array
a
in case of scaling and symmetric weighted matching.
0*
Disable scaling. Default for symmetric indefinite matrices.
1*
Enable scaling. Default for nonsymmetric matrices.
Scale the matrix so that the diagonal elements are equal to 1 and the absolute values of the off-diagonal entries are less or equal to 1. This scaling method is applied to nonsymmetric matrices (
mtype
= 11,
mtype
= 13). The scaling can also be used for symmetric indefinite matrices (
mtype
= -2,
mtype
= -4,
mtype
= 6) when the symmetric weighted matchings are applied (
iparm
[12]
= 1).
Note that in the analysis phase (
phase
=11) you must provide the numerical values of the matrix
A
in case of scaling.
iparm
[11]
input
Solve with transposed or conjugate transposed matrix
A
.
For real matrices, the terms
transposed
and
conjugate transposed
are equivalent.
0*
Solve a linear system
AX
=
B
.
1
Solve a conjugate transposed system
A
H
X
=
B
based on the factorization of the matrix
A
.
2
Solve a transposed system
A
T
X
=
B
based on the factorization of the matrix
A
.
iparm
[12]
input
Improved accuracy using (non-) symmetric weighted matching.
Intel® MKL
PARDISO can use a maximum weighted matching algorithm to permute large elements close the diagonal. This strategy adds an additional level of reliability to the factorization methods and complements the alternative of using more complete pivoting techniques during the numerical factorization.
  
0*
Disable matching. Default for symmetric indefinite matrices.
1*
Enable matching. Default for nonsymmetric matrices.
Maximum weighted matching algorithm to permute large elements close to the diagonal.
It is recommended to use
iparm
[10]
= 1 (scaling) and
iparm
[12]
= 1 (matching) for highly indefinite symmetric matrices, for example from interior point optimizations or saddle point problems.
Note that in the analysis phase (
phase
=11) you must provide the numerical values of the matrix
A
in case of symmetric weighted matching.
iparm
[13]
output
Number of perturbed pivots.
After factorization, contains the number of perturbed pivots for the matrix types: 1, 3, 11, 13, -2, -4 and 6.
iparm
[14]
output
Peak memory on symbolic factorization.
The total peak memory in kilobytes that the solver needs during the analysis and symbolic factorization phase.
This value is only computed in phase 1.
iparm
[15]
output
Permanent memory on symbolic factorization.
Permanent memory from the analysis and symbolic factorization phase in kilobytes that the solver needs in the factorization and solve phases.
This value is only computed in phase 1.
iparm
[16]
output
Size of factors/Peak memory on numerical factorization and solution.
This parameter provides the size in kilobytes of the total memory consumed by in-core
Intel® MKL
PARDISO for internal floating point arrays. This parameter is computed in phase 1. See
iparm
[62]
for the OOC mode.
The total peak memory consumed by
Intel® MKL
PARDISO is
max(
iparm
[14]
,
iparm
[15]
+
iparm
[16]
)
iparm
[17]
input/output
Report the number of non-zero elements in the factors.
<0
Enable reporting if
iparm
[17]
< 0 on entry. The default value is -1.
>=0
Disable reporting.
iparm
[18]
input/output
Report number of floating point operations (in 10
6
floating point operations) that are necessary to factor the matrix
A
.
<0
Enable report if
iparm
[18]
< 0 on entry. This increases the reordering time.
>=0 *
Disable report.
iparm
[19]
output
Report CG/CGS diagnostics.
>0
CGS succeeded, reports the number of completed iterations.
<0
CG/CGS failed (
error
=-4 after the solution phase).
If
phase
= 23
, then the factors
L
and
U
are recomputed for the matrix
A
and the error flag
error
=0
in case of a successful factorization. If
phase
= 33
, then
error
= -4
signals failure.
iparm
[19]
= - it_cgs*10 - cgs_error
.
Possible values of
cgs_error
:
1 - fluctuations of the residuum are too large
2 -
||dx
max_it_cgs/2
||
is too large (slow convergence)
3 - stopping criterion is not reached at
max_it_cgs
4 - perturbed pivots caused iterative refinement
5 - factorization is too fast for this matrix. It is better to use the factorization method with
iparm
[3]
= 0
iparm
[20]
input
Pivoting for symmetric indefinite matrices.
Use
iparm
[10]
= 1 (scaling) and
iparm
[12]
= 1 (matchings) for highly indefinite symmetric matrices, for example from interior point optimizations or saddle point problems.
0
Apply 1x1 diagonal pivoting during the factorization process.
1*
Apply 1x1 and 2x2 Bunch-Kaufman pivoting during the factorization process. Bunch-Kaufman pivoting is available for matrices of
mtype
=-2
,
mtype
=-4
, or
mtype
=6
.
2
Apply 1x1 diagonal pivoting during the factorization process. Using this value is the same as using
iparm
[20]
= 0 except that the solve step does not automatically make iterative refinements when perturbed pivots are obtained during numerical factorization. The number of iterations is limited to the number of iterative refinements specified by
iparm
[7]
(0 by default).
3
Apply 1x1 and 2x2 Bunch-Kaufman pivoting during the factorization process. Bunch-Kaufman pivoting is available for matrices of
mtype
=-2
,
mtype
=-4
, or
mtype
=6
. Using this value is the same as using
iparm
[20]
= 1 except that the solve step does not automatically make iterative refinements when perturbed pivots are obtained during numerical factorization. The number of iterations is limited to the number of iterative refinements specified by
iparm
[7]
(0 by default).
iparm
[21]
output
Inertia: number of positive eigenvalues.
Intel® MKL
PARDISO reports the number of positive eigenvalues for symmetric indefinite matrices.
iparm
[22]
output
Inertia: number of negative eigenvalues.
Intel® MKL
PARDISO reports the number of negative eigenvalues for symmetric indefinite matrices.
iparm
[23]
input
Parallel factorization control.
0*
Intel® MKL
PARDISO uses the classic algorithm for factorization.
1
Intel® MKL
PARDISO uses a two-level factorization algorithm. This algorithm generally improves scalability in case of parallel factorization on many OpenMP threads (more than eight).
Disable
iparm
[10]
(scaling) and
iparm
[12]
= 1 (matching) when using the two-level factorization algorithm. Otherwise
Intel® MKL
PARDISO uses the classic factorization algorithm.
10
Intel® MKL
PARDISO uses an improved two-level factorization algorithm for nonsymmetric matrices.
iparm
[24]
input
Parallel forward/backward solve control.
0*
Intel® MKL
PARDISO uses the following strategy for parallelizing the solving step:
In the case of the one right-hand side, the parallelization will be performed by partitioning the matrix.
Otherwise, the parallelization will be over the right-hand sides.
This feature is available only for in-core
Intel® MKL
PARDISO (see
iparm
[59]
).
1
Intel® MKL
PARDISO uses the sequential forward and backward solve.
2
Independent from the number of the right-hand sides,
Intel® MKL
PARDISO uses the parallel algorithm based on the matrix partitioning.
This feature is available only for in-core
Intel® MKL
PARDISO (see
iparm
[59]
).
iparm
[25]
Reserved. Set to zero.
iparm
[26]
input
Matrix checker.
0*
Intel® MKL
PARDISO does not check the sparse matrix representation for errors.
1
Intel® MKL
PARDISO checks integer arrays
ia
and
ja
. In particular,
Intel® MKL
PARDISO checks whether column indices are sorted in increasing order within each row