# Direct Sparse Solver (DSS) Interface Routines

Intel MKL supports an alternative to the PARDISO* interface for the direct sparse solver referred to here as DSS interface. The DSS interface implements a group of user-callable routines that are used in the step-by-step solving process and exploits the general scheme described in 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 current implementation of the DSS interface additionally supports the out-of-core (OOC) version.

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 array.
dss_reorder | Based on the non-zero structure of the matrix, this routine computes a permutation vector to reduce fill-in during the factoring process.
dss_factor_real, dss_factor_complex | Computes the LU, LDTT 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. Gathers the following statistics: time taken to do reordering, time taken to do factorization, problem solving duration, determinant of a matrix, inertia of a matrix, number of floating point operations taken during factorization, peak memory symbolic factorization, permanent memory symbolic factorization, and memory numerical factorization and solution. This routine can be invoked in any phase of the solving process after the “reorder” phase, but before the “delete” phase. Note that appropriate argument(s) must be supplied to this routine to match the phase in which it is invoked.
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, the Intel MKL DSS interface routines are invoked in the order in which they are listed in Table “DSS Interface Routines”, with the exception of dss_statistics, which is invoked as described in the table.

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 necessary to invoke the Intel MKL sparse routines in an order other than listed in the table. The DSS interface provides such option. The solving process is conceptually divided into six phases, as shown in Figure “Typical order for invoking DSS interface routines” , that indicates the typical order(s) in which the DSS interface routines can be invoked.

Typical order for invoking DSS interface routines

See code examples that uses the DSS interface routines to solve systems of linear equations in Direct Sparse Solver Examples section in the appendix C.

- DSS Interface Description
- Implementation Details

Parent topic: Sparse Solver Routines