The following table lists all parameters of PARDISO and gives their brief descriptions.
Parameter | Type | Description | Values | Comments | In/Out |
---|---|---|---|---|---|
pt(64) |
FORTRAN 77: INTEGER on 32-bit architectures, INTEGER*8 on 64-bit architectures Fortran 90: TYPE(MKL_PARDISO_HANDLE), INTENT(INOUT) C: void* |
Solver internal data address pointer |
0 |
Must be initialized by zeros and never be modified later |
in/out |
maxfct |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
Maximal number of factors in memory |
>0 |
Generally used value is 1 |
in |
mnum |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
The number of matrix (from 1 to maxfct) to solve |
[1; maxfct] |
Generally used value is 1 |
in |
mtype |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
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 unsymmetric matrix |
||||
13 |
Complex and unsymmetric matrix |
||||
phase |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
Controls the execution of the solver |
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 |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
Number of equations in the sparse linear system A*X = B |
>0 | in | |
a(*) |
FORTRAN 77: PARDISO_DATA_TYPE1) Fortran 90: PARDISO_DATA_TYPE1), INTENT(IN) C: 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 CSR format with increasing values of ja for each row |
in |
ia(n+1) |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
rowIndex array in CSR format |
>=0 | 0 <
ia(i) <=
ia(i+1)
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) 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. |
in |
ja(*) |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
columns array in CSR format |
>=0 |
The indices in each row must be sorted in increasing order. For symmetric and structurally symmetric matrices zero diagonal elements are also stored in a and ja. 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. |
in |
perm(n) |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(INOUT) C: _INTEGER_t* |
Holds the permutation vector of size n |
>=0 |
Let B = P*A*PT be the permuted matrix. Row (column) i of A is the perm(i) row (column) of B. The numbering of the array must describe a permutation. You can apply your own fill-in reducing ordering (iparm(5)=1) or return the permutation from the solver (iparm(5)=2 ). Note: iparm(35) indicates whether row/column indexing starts from 1 or 0. |
in/out |
nrhs |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
Number of right-hand sides that need to be solved for |
>=0 |
Generally used value is 1 |
in |
iparm(64) |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(INOUT) C: _INTEGER_t* |
This array is used to pass various parameters to PARDISO and to return some useful information after execution of the solver |
* |
If iparm(1)=0 , PARDISO fills iparm(2) through iparm(64) with default values and uses them. |
in/out |
msglvl |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(IN) C: _INTEGER_t* |
Message level information |
0 |
PARDISO generates no output |
in |
1 |
PARDISO prints statistical information |
||||
b(n*nrhs) |
FORTRAN 77: PARDISO_DATA_TYPE1) Fortran 90: PARDISO_DATA_TYPE1), INTENT(INOUT) C: 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-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. |
in/out |
x(n*nrhs) |
FORTRAN 77: PARDISO_DATA_TYPE1) Fortran 90: PARDISO_DATA_TYPE1), INTENT(OUT) C: void* |
Solution vectors |
* |
On output, if iparm(6)=1, 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. |
out |
error |
FORTRAN 77: INTEGER Fortran 90: INTEGER, INTENT(OUT) C: _INTEGER_t* |
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 the table below.
The following table lists the values of PARDISO_DATA_TYPE depending on the matrix types and values of the parameter iparm(28).
Data type value | Matrix type mtype | iparm(28) | comments |
---|---|---|---|
DOUBLE PRECISION | 1, 2, -2, 11 | 0 |
Real matrices, double precision |
REAL | 1 |
Real matrices, single precision |
|
DOUBLE COMPLEX | 3, 6, 13, 4, -4 | 0 |
Complex matrices, double precision |
COMPLEX | 1 |
Complex matrices, single precision |
The following table lists all individual components of the PARDISO iparm() parameter and their brief descriptions. Components not listed in the table must be initialized with 0. Default values in the column Values are denoted as X*.
Component | Description | Values | Comments | In/Out |
---|---|---|---|---|
INPUT, INPUT/OUTPUT PARAMETERS | ||||
iparm(1) |
Use default values |
0 |
iparm(2) -iparm(64) are filled with default values. |
in |
!=0 |
You must supply all values in components iparm(2) -iparm(64) |
|||
iparm(2) |
Fill-in reducing ordering for the input matrix |
0 |
The minimum degree algorithm. |
in |
2* |
The nested dissection algorithm from the METIS package |
|||
3 |
The parallel (OpenMP) version of the nested dissection algorithm. |
|||
iparm(4) |
Preconditioned CGS/CG |
0* |
Do not perform preconditioned Krylow-Subspace iterations. |
in |
10*L+1 |
CGS iteration replaces the computation of LU. The preconditioner is LU that is computed at the previous step (the first step or last step with a failure) in a sequence of solutions needed for identical sparsity patterns. L controls the stopping criterion of the Krylow-Subspace iteration: epsCGS = 10^(-L) is used in the stopping criterion ||dxi|| / ||dx0|| < epsCGS, with ||dxi|| = ||inv(L*U)*ri|| and ri is the residuum at iteration i of the preconditioned Krylow-Subspace iteration. |
|||
10*L+2 |
Same as above, but CG iteration replaces the computation of LU. Designed for symmetric positive definite matrices. |
|||
iparm(5) |
User permutation |
0* |
User permutation in perm array is ignored. |
in |
1 |
PARDISO uses the user supplied fill-in reducing permutation from perm array. iparm(2) is ignored. |
|||
2 |
PARDISO returns the permutation vector computed at phase 1 into perm array |
|||
iparm(6) |
Write solution on x |
0* |
The array x contains the solution; right-hand side vector b is kept unchanged. |
in |
1 |
The solver stores the solution on the right-hand side b. Note that the array x is always used. |
|||
iparm(8) |
Iterative refinement step |
0* |
The solver automatically performs two steps of iterative refinements when perturbed pivots are obtained during the numerical factorization. |
in |
>0 |
Maximum number of iterative refinement steps that the solver performs. The solver performs not more than the absolute value of iparm(8) steps of iterative refinement and stops the process if a satisfactory level of accuracy of the solution in terms of backward error is achieved. The number of executed iterations is reported in iparm(7). |
|||
<0 |
Same as above, but the accumulation of the residuum uses extended precision real and complex data types. |
|||
iparm(10) |
Pivoting perturbation |
* |
This parameter instructs PARDISO how to handle small pivots or zero pivots for unsymmetric matrices (mtype =11, mtype =13) and symmetric matrices (mtype =-2, mtype =-4, mtype =6). Small pivots are perturbed with eps = 10^(-iparm(10)). |
in |
13* |
The default value for unsymmetric 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(11) |
Scaling |
0* |
Disable scaling. Default for symmetric indefinite matrices. |
in |
1* |
Enable scaling. Default for unsymmetric 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 unsymmetric 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(13)= 1). Note that in the analysis phase (phase=11) you must provide the numerical values of the matrix A in case of scaling. |
|||
iparm(12) |
Solving with conjugate or transposed matrix A |
0* |
Solve a Ax=b linear system. |
|
1 |
Solve a conjugate system AHx = b based on the factorization of the matrix A. |
|||
2 |
Solve a transposed system ATx = b based on the factorization of the matrix A. |
|||
iparm(13) |
Improved accuracy using (non-) symmetric weighted matching |
0* |
Disable matching. Default for symmetric indefinite matrices. |
in |
1* |
Enable matching. Default for symmetric indefinite matrices. Maximum weighted matching algorithm to permute large elements close to the diagonal. It is recommended to use iparm(11)= 1 (scaling) and iparm(13)= 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(18) |
Report the number of non-zero elements in the factors |
<0 |
Enable reporting if iparm(18) < 0 on entry. The default value is -1. |
in/out |
>=0 |
Disable reporting. |
|||
iparm(19) |
Report Mflops that are necessary to factor the matrix A. |
<0 |
Enable report if iparm(18) < 0 on entry. This increases the reordering time. |
in/out |
>=0 |
Disable report. 0 is a default value. |
|||
iparm(21) |
Pivoting for symmetric indefinite matrices |
0 |
Apply 1x1 diagonal pivoting during the factorization process. |
in |
1* |
Apply 1x1 and 2x2 Bunch and Kaufman pivoting during the factorization process. |
|||
iparm(24) |
parallel factorization control |
0 |
PARDISO uses the previous algorithm for factorization. Default value. |
in |
1 |
PARDISO uses new two-level factorization algorithm. |
|||
iparm(25) |
Parallel forward/backward solve control |
0 |
PARDISO uses the parallel algorithm for solve step. Default value. |
in |
1 |
PARDISO uses the sequential forward and backward solve. |
|||
iparm(27) |
Matrix checker |
0* |
PARDISO does not check the sparse matrix representation. |
in |
1 |
PARDISO checks integer arrays ia and ja. In particular, PARDISO checks whether column indices are sorted in increasing order within each row. |
|||
iparm(28) |
Single or double precision of PARDISO |
0* |
Input arrays (a, x and b) and all internal arrays must be presented in double precision. |
in |
1 |
Input arrays (a, x and b) must be presented in single precision. In this case all internal computations are performed in single precision. |
|||
iparm(31) |
Enables to solve partially for sparse right-hand sides and sparse solution |
0 |
Disables this option. Default value. |
in |
1 |
The right hand side is assumed to be sparse, perm(i)=1 means that the i-th component of the right hand side is nonzero, and this component of the solution vector is computed. |
|||
2 |
The right hand side is assumed to be sparse, perm(i)=1 means that the i-th component of the right hand side is nonzero, and all components of the solution vector are computed. |
|||
3 | The right hand side can be of any type. If perm(i)=1, the i-th component of the solution vector is computed. | |||
iparm(35) |
One- or zero-based indexing of columns and rows |
0* |
One-based indexing: columns and rows indexing in arrays ia, ja, and perm starts from 1. Default value. |
in |
1 |
Zero-based indexing: columns and rows indexing in arrays ia, ja, and perm starts from 0. |
|||
iparm(60) |
PARDISO mode |
0* |
In-core PARDISO |
in |
1 |
In-core PARDISO is used if the total memory needed for storing the matrix factors is less than the value of the environment variable MKL_PARDISO_OOC_MAX_CORE_SIZE. Otherwise out-of-core (OOC) PARDISO is used. |
|||
2 |
Out-of-core (OOC) PARDISO The OOC PARDISO can solve very large problems by holding the matrix factors in files on the disk. Hence the amount of RAM required by OOC PARDISO is significantly reduced. |
|||
OUTPUT PARAMETERS | ||||
iparm(7) |
Number of performed iterative refinement steps |
>=0 |
Reports the number of iterative refinement steps that were actually performed during the solve step. |
out |
iparm(14) |
Number of perturbed pivots |
>=0 |
After factorization, contains the number of perturbed pivots for the matrix types: 11, 13, -2, -4 and -6. |
out |
iparm(15) |
Peak memory on symbolic factorization |
>0 KB |
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. |
out |
iparm(16) |
Permanent memory on symbolic factorization |
>0 KB |
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. |
out |
iparm(17) |
Size of factors/Peak memory on numerical factorization and solution |
>0 KB |
This parameter provides the size in kilobytes of the total memory consumed by in-core PARDISO for internal float point arrays. This parameter is computed in phase 1. See iparm(63) for the OOC mode. The total peak memory consumed by PARDISO is max(iparm(15), iparm(16)+iparm(17)) |
out |
iparm(20) |
CG/CGS diagnostics |
>0 |
CGS succeeded, reports the number of completed iterations. |
out |
<0 |
CG/CGS failed (error=-4 after the solution phase) iparm(20)= - it_cgs*10 - cgs_error. Possible values of cgs_error: 1 - fluctuations of the residuum are too large 2 - ||dx at max_it_cgs/2|| is too large (slow convergence) 3 - stopping criterion is not reached at max_it_cgs 4 - perturbed pivots causes iterative refinement |
|||
iparm(22) |
Inertia: number of positive eigenvalues |
>=0 |
PARDISO reports the number of positive eigenvalues for symmetric indefinite matrices |
out |
iparm(23) |
Inertia: number of negative eigenvalues |
>=0 |
PARDISO reports the number of negative eigenvalues for symmetric indefinite matrices. |
out |
iparm(30) |
Number of zero or negative pivots |
>=0 |
If PARDISO detects zero or negative pivot for mtype=2 or mtype=4 types, the factorization is stopped, PARDISO returns immediately with an error = -4, and iparm(30) reports the number of the equation where the first zero or negative pivot is detected. |
out |
iparm(63) |
Size of the minimum OOC memory for numerical factorization and solution |
>0 KB |
This parameter provides the size in kilobytes of the minimum memory required by OOC PARDISO for internal float point arrays. This parameter is computed in phase 1. Total peak memory consumption of OOC PARDISO can be estimated as max(iparm(15), iparm(16)+iparm(63)) |
Copyright © 1994 - 2011, Intel Corporation. All rights reserved.