dss_statistics
dss_statistics
Returns statistics about various phases of the solving process.
Syntax
MKL_INT
dss_statistics
(
_MKL_DSS_HANDLE_t *
handle
,
MKL_INT const *
opt
,
_CHARACTER_STR_t const *
statArr
,
_DOUBLE_PRECISION_t *
retValues
)
Include Files
- mkl.h
Description
The
dss_statistics
routine returns statistics about various phases of the solving process. This routine gathers the following statistics: - time taken to do reordering,
- time taken to do factorization,
- duration of problem solving,
- determinant of the symmetric indefinite input matrix,
- inertia of the symmetric indefinite input matrix,
- number of floating point operations taken during factorization,
- total peak memory needed during the analysis and symbolic factorization,
- permanent memory needed from the analysis and symbolic factorization,
- memory consumption for the factorization and solve phases.
Statistics are returned in accordance with the input string specified by the parameter
statArr
. The value of the statistics is returned in double precision in a return array, which you must allocate beforehand.For multiple statistics, multiple string constants separated by commas can be used as input. Return values are put into the return array in the same
order as specified in the input string.
Statistics can only be requested at the appropriate stages of the solving process. For example, requesting
FactorTime
before a matrix is factored leads to an error.The following table shows the point at which each individual statistics item can be requested:
Type of Statistics | When to Call |
---|---|
ReorderTime | After dss_reorder is completed successfully. |
FactorTime | After dss_factor_real or dss_factor_complex is completed successfully. |
SolveTime | After dss_solve_real or dss_solve_complex is completed successfully. |
Determinant | After dss_factor_real or dss_factor_complex is completed successfully. |
Inertia | After dss_factor_real is completed successfully and the matrix is real, symmetric, and indefinite. |
Flops | After dss_factor_real or dss_factor_complex is completed successfully. |
Peakmem | After dss_reorder is completed successfully.
|
Factormem | After dss_reorder is completed successfully.
|
Solvemem | After dss_factor_real or dss_factor_complex is completed successfully.
|
Input Parameters
- handle
- Pointer to the data structure storing internal DSS results (MKL_DSS_HANDLE).
- opt
- Parameter to pass the DSS options.
- statArr
- Input string that defines the type of the returned statistics. The parameter can include one or more of the following string constants (case of the input string has no effect):
- ReorderTime
- Amount of time taken to do the reordering.
- FactorTime
- Amount of time taken to do the factorization.
- SolveTime
- Amount of time taken to solve the problem after factorization.
- Determinant
- Determinant of the matrixA.For real matrices: the determinant is returned asdet_pow,det_basein two consecutive return array locations, where1.0and≤abs(det_base) < 10.0.determinant=det_base*10(det_pow)For complex matrices: the determinant is returned asdet_pow,det_re,det_imin three consecutive return array locations, where1.0and≤abs(det_re) + abs(det_im) < 10.0.determinant= (det_re,det_im)*10(det_pow)
- Inertia
- Inertia of a real symmetric matrix is defined as a triplet of nonnegative integers(, wherep,n,z)pis the number of positive eigenvalues,nis the number of negative eigenvalues, andzis the number of zero eigenvalues.Inertiais returned as three consecutive return array locationsp,n,z.Computing inertia can lead to incorrect results for matrixes with a cluster of eigenvalues which are near 0.Inertiaof ak-by-kreal symmetric positive definite matrix is always(. Thereforek, 0, 0)Inertiais returned only in cases of real symmetric indefinite matrices. For all other matrix types, an error message is returned.
- Flops
- Number of floating point operations performed during the factorization.
- Peakmem
- Total peak memory in kilobytes that the solver needs during the analysis and symbolic factorization phase.
- Factormem
- Permanent memory in kilobytes that the solver needs from the analysis and symbolic factorization phase in the factorization and solve phases.
- Solvemem
- Total double precision memory consumption (kilobytes) of the solver for the factorization and solve phases.
Output Parameters
- retValues
- Value of the statistics returned.
Finding 'time used to reorder' and 'inertia' of a matrix
The example below illustrates the use of the
dss_statistics
routine.To find the above values, call
dss_statistics
(handle
, opt
, statArr
, retValue
), where staArr
is "ReorderTime
,Inertia
"In this example,
retValue
has the following values:- retValue[0]
- Time to reorder.
- retValue[1]
- Positive Eigenvalues.
- retValue[2]
- Negative Eigenvalues.
- retValue[3]
- Zero Eigenvalues.
Return Values
MKL_DSS_SUCCESS
MKL_DSS_INVALID_OPTION
MKL_DSS_STATISTICS_INVALID_MATRIX
MKL_DSS_STATISTICS_INVALID_STATE
MKL_DSS_STATISTICS_INVALID_STRING
MKL_DSS_MSG_LVL_ERR
MKL_DSS_TERM_LVL_ERR