Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public
Document Table of Contents

sparse_matrix_checker

Checks the correctness of a 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® oneAPI Math Kernel Library (oneMKL) 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

check_result(2) = ja(j + 1)

check_result(3) = ja(j + 2)