Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

dss_statistics

Returns statistics about various phases of the solving process.

Syntax

call dss_statistics
(
handle
,
opt
,
statArr
,
retValues
)
Include Files
  • mkl.fi
    ,
    mkl_dss.f90
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:
Statistics Calling Sequences
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
TYPE (MKL_DSS_HANDLE)
,
INTENT(IN)
Pointer to the data structure storing internal DSS results (
MKL_DSS_HANDLE
).
opt
INTEGER
,
INTENT(IN)
Parameter to pass the DSS options.
statArr
INTEGER
,
INTENT(IN)
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 matrix
A
.
For real matrices: the determinant is returned as
det_pow
,
det_base
in two consecutive return array locations, where
1.0
abs(
det_base
) < 10.0
and
determinant
=
det_base
*10
(
det_pow
)
.
For complex matrices: the determinant is returned as
det_pow
,
det_re
,
det_im
in three consecutive return array locations, where
1.0
abs(
det_re
) + abs(
det_im
) < 10.0
and
determinant
= (
det_re
,
det_im
)*10
(
det_pow
)
.
Inertia
Inertia of a real symmetric matrix is defined as a triplet of nonnegative integers
(
p
,
n
,
z
)
, where
p
is the number of positive eigenvalues,
n
is the number of negative eigenvalues, and
z
is the number of zero eigenvalues.
Inertia
is returned as three consecutive return array locations
p
,
n
,
z
.
Computing inertia can lead to incorrect results for matrixes with a cluster of eigenvalues which are near 0.
Inertia
of a
k
-by-
k
real symmetric positive definite matrix is always
(
k
, 0, 0)
. Therefore
Inertia
is 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