Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
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

dss_create

Initializes the solver.

Syntax

MKL_INT dss_create(_MKL_DSS_HANDLE_t *handle, MKL_INT const *opt)

Include Files

  • mkl.h

Description

The dss_create routine initializes the solver. After the call to dss_create, all subsequent invocations of the Intel® oneAPI Math Kernel Library (oneMKL) DSS routines must use the value of the handle returned bydss_create.

warning:

Do not write the value of handle directly.

The default value of the parameter opt is

MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR.

By default, the DSS routines use double precision for solving systems of linear equations. The precision used by the DSS routines can be set to single mode by adding the following value to the opt parameter:

MKL_DSS_SINGLE_PRECISION.

Input data and internal arrays are required to have single precision.

By default, the DSS routines use Fortran style (one-based) indexing for input arrays of integer types (the first value is referenced as array element 1). To set indexing to C style (the first value is referenced as array element 0), add the following value to the opt parameter:

MKL_DSS_ZERO_BASED_INDEXING.

The opt parameter can also control number of refinement steps used on the solution stage by specifying the two following values:

MKL_DSS_REFINEMENT_OFF - maximum number of refinement steps is set to zero; MKL_DSS_REFINEMENT_ON (default value) - maximum number of refinement steps is set to 2.

By default, DSS uses in-core computations. To launch the out-of-core version of DSS (OOC DSS) you can add to this parameter one of two possible values: MKL_DSS_OOC_STRONG and MKL_DSS_OOC_VARIABLE.

MKL_DSS_OOC_STRONG - OOC DSS is used.

MKL_DSS_OOC_VARIABLE - if the memory needed for the matrix factors is less than the value of the environment variable MKL_PARDISO_OOC_MAX_CORE_SIZE, then the OOC DSS uses the in-core kernels of Intel® oneAPI Math Kernel Library (oneMKL) PARDISO, otherwise it uses the OOC computations.

The variable MKL_PARDISO_OOC_MAX_CORE_SIZE defines the maximum size of RAM allowed for storing work arrays associated with the matrix factors. It is ignored if MKL_DSS_OOC_STRONG is set. The default value of MKL_PARDISO_OOC_MAX_CORE_SIZE is 2000 MB. This value and default path and file name for storing temporary data can be changed using the configuration file pardiso_ooc.cfg or command line (See more details in the description of the pardiso routine).

warning:

Other than message and termination level options, do not change the OOC DSS settings after they are specified in the routine dss_create.

Input Parameters

opt

Parameter to pass the DSS options. The default value is MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR.

Output Parameters

handle

Pointer to the data structure storing internal DSS results (MKL_DSS_HANDLE).

Return Values

MKL_DSS_SUCCESS

MKL_DSS_INVALID_OPTION

MKL_DSS_OUT_OF_MEMORY

MKL_DSS_MSG_LVL_ERR

MKL_DSS_TERM_LVL_ERR