Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

sparse_matrix_checker

Checks correctness of sparse matrix.

Syntax

error
=
sparse_matrix_checker
(
handle
)
Include Files
  • mkl_sparse_handle.fi
    ,
    mkl_sparse_handle.f90
Description
The
sparse_matrix_checker
routine checks a user-defined array used to store a sparse matrix in order to detect issues which could cause problems in routines that require sparse input matrices, such as
Intel® MKL
PARDISO, DSS, or Sparse BLAS.
Input Parameters
handle
TYPE (
SPARSE_STRUCT
), INTENT(
INOUT
)
Pointer to the data structure describing the sparse array to check.
Return Values
The routine returns a value
error
. Additionally, the
check_result
parameter returns information about where the error occurred, which can be used when
message_level
is
MKL_NO_PRINT
.
Sparse Matrix Checker Error Values
error
value
Meaning
Location
MKL_SPARSE_CHECKER_SUCCESS
The input array successfully passed all checks.
MKL_SPARSE_CHECKER_NON_MONOTONIC
The input array is not 0 or 1 based (
ia
(1)
, is not 0 or 1) or elements of
ia
are not in non-decreasing order as required.
Fortran:
ia
(
i
+ 1)
and
ia
(
i
+ 2)
are incompatible.
check_result
(1)
=
i
check_result
(2)
=
ia
(
i
+ 1)
check_result
(3)
=
ia
(
i
+ 2)
MKL_SPARSE_CHECKER_OUT_OF_RANGE
The value of the
ja
array is lower than the number of the first column or greater than the number of the last column.
Fortran:
ia
(
i
+ 1)
and
ia
(
i
+ 2)
are incompatible.
check_result
(1)
=
i
check_result
(2)
=
ia
(
i
+ 1)
check_result
(3)
=
ia
(
i
+ 2)
MKL_SPARSE_CHECKER_NONTRIANGULAR
The
matrix_structure
parameter is
MKL_UPPER_TRIANGULAR
and both
ia
and
ja
are not upper triangular, or the
matrix_structure
parameter is
MKL_LOWER_TRIANGULAR
and both
ia
and
ja
are not lower triangular
Fortran:
ia
(
i
+ 1)
and
ja
(
j
+ 1)
are incompatible.
check_result
(1)
=
i
check_result
(2)
=
ia
(
i
+ 1)
=
j
check_result
(3)
=
ja
(
j
+ 1)
MKL_SPARSE_CHECKER_NONORDERED
The elements of the
ja
array are not in non-decreasing order in each row as required.
Fortran:
ja
(
j
+ 1)
and
ja
(
j
+ 2)
are incompatible.
check_result
(1)
=
j