# Summary of API differences between Intel® MKL PARDISO and University of Basel PARDISO* 4.0.0

By Sergey Solovev (Intel), Updated

This is a computer translation of the original content. It is provided for general information only and should not be relied upon as complete or accurate.

**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 | |

For more complete information about compiler optimizations, see our Optimization Notice.