Description of PARDISO errors and messages
By Sergey Pudov (Intel), Updated
See the table below for the description of the error indicator.
Error ( Integer) | Information |
0 | no error |
-1 | input inconsistency |
-2 | not enough memory |
-3 | reordering problem |
-4 | zero pivot, numerical factorization or iterative refinement problem |
-5 | unclassified (internal) error |
-6 | preordering failed (matrix types 11, 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 |
Below each error is described in details:
0: no error
-1: Input inconsistency
This error can appear in the following situations:
- Incorrect stage number for PARDISO was called.
- Incorrect PARDISO calling sequence, e.g. run stage > 1 without initialization results in error reporting.
- Incorrect number of matrices to be solved was set (PARDISO can be used for solving several matrices with the same sparsity structure at once, taking into account that their maximum number was defined previously. Setting the number of matrices to be solved outside the range of 1≤ … ≤maxfct results in error).
- PARDISO checks the parameters at each stage for consistency with the parameters at the previous stages. Every disagreement results in error reporting.
-2: not enough memory
This error value is returned in the case of any problem with memory allocation inside PARDISO.
PARDISO messages:
"*** Error in PARDISO memory allocation: [STRUCTURE NAME], size to allocate: %d bytes"
"total memory wanted here: %d kbyte"
"symbolic (max): %d symbolic (permanent): %d"
"real(including 1 factor): %d"
It describes the issue that arises on allocation of STRUCTURE_NAME inside PARDISO. A additional information about current memory usages is also printed.
-3: reordering problem
Returned for any problem on a reordering stage (phase 11)
PARDISO messages:
"*** error PARDISO: reordering, symbolic factorization"
-4: zero pivot, numerical factorization or iterative refinement problem
Let us start with a citation of the Intel MKL manual:
Using phase =33 results in an error message (error =4, should be -4 *) if the stopping criteria for the Krylow-Subspace iteration cannot be reached.
If phase= 23, then the factors L, U are recomputed for the matrix A and the error flag error=0 in case of a successful factorization. If phase =33, then error = -4signals the failure
If the solver detects a zero or negative pivot for these matrix types, the factorization is stopped, PARDISO returns immediately with an error (error = -4) and iparm(30) contains the number of the equation where the first zero or negative pivot is detected.
The error returned in the case of any problem at the factorization stage (phase 22) or at the iterative refinement stage of solution.
PARDISO messages:
"*** Error in PARDISO: cgs error iparam(20) %d" – prints iparm(20) – see CG / CGS diagnostics in the Intel MKL manual
"*** error PARDISO: iterative refinement"
" contraction rate is greater than 0.9, interrupt" – rate of contraction is too small
"*** error PARDISO: iterative refinement"
" exceeds max. iteration number %d"- prints abs(iparm(8))
"*** Error in PARDISO: internal error, insufficient memory factorization" – looks like a problem at the factorization stage except for pivoting issues (see errors below)
"*** Error in PARDISO: zero or negative pivot, A is not SPD-matrix" – original matrix (almost) not SPD one (probably due to computer arithmetic inaccuracies)
"*** Error in PARDISO: zero pivot" – the same as above but for other matrix types
-5: unclassified (internal) error
This error value is not used currently and is reserved for the future use.
-6: preordering failed (matrix types 11, 13 only)
This error value is returned in the case of any problem at the stage of preparation for reordering (in matching algorithm).
PARDISO messages:
"*** Error in PARDISO: preordering failed after %d neqns out of %d"
"structure singular or input/parameter problem (matrix type 11,13)"
Looks like the message provides no meaningful information.
-7: diagonal matrix problem
PARDISO prints no messages.
-8: 32-bit integer overflow problem
This error value is returned on 32-bit architecture for big matrices when indices become greater than the maximal integer value on this platform.
PARDISO messages:
"*** error PARDISO: reordering, symbolic factorization"
-9: not enough memory for OOC
Let us start with a citation of the Intel MKL manual:
Note that if iparm(60) is equal to 1 or 2, and the total peak memory needed for strong local arrays is more than MKL_PARDISO_OOC_MAX_CORE_SIZE, the program stops with error -9. In this case, increase of MKL_PARDISO_OOC_MAX_CORE_SIZE is recommended.
This error value is returned when amount of memory available for PARDISO (defined by MKL_PARDISO_OOC_MAX_CORE_SIZE, by default 2000 Mb) is not enough to solve the current matrix. The issue can be resolved by increasing the value for available memory.
-10: problems with opening OOC temporary files
This error value is returned when PARDISO can’t create / open temporary files for storing OOC arrays, e.g. in the case of wrong permissions or when files were removed or blocked or not released after the previous steps.
-11: read/write problems with the OOC data file
This error value is returned when some problems appear in the process of working with files, e.g. in the case of no space left on device or problems with read / write operations because of algorithm issues.
* - the documentation error. Will be fixed in the version 10.3 Update3.
** - available memory means the RAM system's memory which is available at the moment of starting the calculations.