Introduction
The release of PARDISO 4.0.0 from the University of Basel is not backward compatible and thus introduces some incompatibilities with the implementation of PARDISO that is available with the Intel® Math Kernel Library. This article outlines those places where the two interfaces have diverged.
PARDISO 4.0.0 introduces the additional routine pardisoinit which is to be called before the pardiso routine. Intel® MKL PARDISO does not have such a routine.In version 10.2 Update 6, Intel® MKL PARDISO introduces an additional interface function: pardiso_64. This interface is identical to that of pardiso except that it accepts and returns all integer data in the INTEGER*8 type. This new interface is supported only in the 64-bit Intel MKL libraries. PARDISO will return an error code (-12) if a program calling pardiso_64 is linked to the 32-bit libraries.
Routine arguments differences
PARDISO* 4.0.0 has additional argument dparm array of type REAL and length 64 that is used for a multi-recursive iterative linear solver. Intel® MKL PARDISO has no support for this solver and no argument dparm in the API. The two tables below outline the differences in the arguments to the respective PARDISO functions and the differences in interpretation of the IPARM array. A full description of the arguments and IPARM array for Intel MKL can be found in the PARDISO Parameter Tables.
PARDISO arguments compared
Argument name |
Argument type |
PARDISO* 4.0.0 |
Intel® MKL PARDISO |
pt(64) |
INTEGER |
Content of array is different (for internal use only) |
|
maxfct |
INTEGER |
same |
|
mnum |
INTEGER |
same |
|
mtype |
INTEGER |
same |
|
phase |
INTEGER |
Use iparm(26) to split forward/backward substitutions |
Stages 331-333 added to perform forward, diagonal, and backward substitution |
n |
INTEGER |
same |
|
a |
REAL/COMPLEX |
same |
|
ia(n+1) |
INTEGER |
Supports 0-based indexing |
|
ja(*) |
INTEGER |
Supports 0-based indexing |
|
perm(n) |
INTEGER |
same |
|
nrhs |
INTEGER |
same |
|
iparm(64) |
INTEGER |
Meaning of array entries is different (see the table below) |
|
msglvl |
INTEGER |
Cannot print multi-recursive iterative solver statistics (no such solver) |
|
b(n,nrhs) |
REAL/COMPLEX |
same |
|
x(n,nrhs) |
REAL/COMPLEX |
same |
|
error |
INTEGER |
Error code -9 is not used -10 means no license file found -11 means license file expired -12 means wrong username or hostname |
-9 means not enough memory for OOC -10 means problems with OOC temp files -11 means read/write problems with the OOC data file Error codes -12, -100, -101, -102, -103 are not used |
dparm(64) |
REAL |
Not present in the argument list |
|
The IPARM arrays compared
Id |
PARDISO* 4.0.0 |
Intel® MKL PARDISO |
|
2 |
Minimum degree and nested dissection algorithm |
Minimum degree, nested dissection and parallel version of the nested dissection algorithm |
|
3 |
Number of processors |
Not used (MKL_NUM_THREADS environment variable and functions are used instead) |
|
12 |
Solving the system with transpose matrix |
Not used |
|
24 |
Parallel numerical factorization |
Not used |
|
25 |
Parallel forward/backward solve |
Not used |
|
26 |
Splitting of forward/backward solve |
Not used (use argument phase instead) |
|
27 |
Not used |
Matrix checker |
|
28 |
Parallel reordering for METIS |
Single or double precision of PARDISO (for parallel reordering use iparm(2)) |
|
29 |
Switch between 32-bit and 64-bit factorization |
Not used (use iparm(28) to control accuracy) |
|
30 |
Control the size of the supernodes |
Zero or negative pivots info |
|
31 |
Partial solve for sparse right-hand side and sparse solution |
Not used |
|
32 |
Use the multi-recursive iterative linear solver |
Not used |
|
33 |
Determinant of a real symmetric indefinite matrix |
Not used |
|
34 |
Identical solution independent on the number of processors |
Not used |
|
35 |
Not used |
MKL 10.2.*: Not used |
|
MKL 10.3.0: C or Fortran style array indexing |
|||
60 |
Not used |
Specifies the PARDISO mode of operation: out-of-core (OOC) or in-core (InCore) |
|
61 |
Not used |
Total peak memory at analysis and factorization phases |
|
62 |
Not used |
Total double precision memory consumption at analysis and factorization phases |
|
63 |
Not used |
Total double precision memory consumption at factorization and solution phases |
|
