Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Direct Sparse Solver (DSS) Interface Routines

Intel® oneAPI Math Kernel Library (oneMKL) supports the DSS interface, an alternative to the Intel® oneAPI Math Kernel Library (oneMKL) PARDISO interface for the direct sparse solver. The DSS interface implements a group of user-callable routines that are used in the step-by-step solving process and utilizes the general scheme described inAppendix A Linear Solvers Basics for solving sparse systems of linear equations. This interface also includes one routine for gathering statistics related to the solving process and an auxiliary routine for passing character strings from Fortran routines to C routines.

The DSS interface also supports the out-of-core (OOC) mode.

Table "DSS Interface Routines" lists the names of the routines and describes their general use.

DSS Interface Routines
Routine Description
dss_create

Initializes the solver and creates the basic data structures necessary for the solver. This routine must be called before any other DSS routine.

dss_define_structure

Informs the solver of the locations of the non-zero elements of the matrix.

dss_reorder

Based on the non-zero structure of the matrix, computes a permutation vector to reduce fill-in during the factoring process.

dss_factor_real, dss_factor_complex

Computes the LU, LDLT or LLT factorization of a real or complex matrix.

dss_solve_real, dss_solve_complex

Computes the solution vector for a system of equations based on the factorization computed in the previous phase.

dss_delete

Deletes all data structures created during the solving process.

dss_statistics

Returns statistics about various phases of the solving process.

mkl_cvt_to_null_terminated_str

Passes character strings from Fortran routines to C routines.

To find a single solution vector for a single system of equations with a single right-hand side, invoke the Intel® oneAPI Math Kernel Library (oneMKL) DSS interface routines in this order:

  1. dss_create
  2. dss_define_structure
  3. dss_reorder
  4. dss_factor_real, dss_factor_complex
  5. dss_solve_real, dss_solve_complex
  6. dss_delete

However, in certain applications it is necessary to produce solution vectors for multiple right-hand sides for a given factorization and/or factor several matrices with the same non-zero structure. Consequently, it is sometimes necessary to invoke the Intel® oneAPI Math Kernel Library (oneMKL) sparse routines in an order other than that listed, which is possible using the DSS interface. The solving process is conceptually divided into six phases.Figure "Typical order for invoking DSS interface routines" indicates the typical order in which the DSS interface routines can be invoked.

Typical order for invoking DSS interface routines


Typical order for invoking DSS interface routines

See the code examples that use the DSS interface routines to solve systems of linear equations in the Intel® oneAPI Math Kernel Library (oneMKL) installation directory (dss_*.f ).

  • examples/solverf/source