Report
s are loaded from report files (extension: .elr
) through the
elaps.io
routine load_report(filename)
. A Report
contains a copy of the
executed Experiment
as well as the resulting measurements.
Table of Contents generated with DocToc
The Sampling measurements are available in three data structures:
rawdata
, fulldata
, and data
.
contains the raw data as produced by the Sampler in the form of a list, each entry of which corresponds to one line in the Sampler's output. Each split by white spaces, where numbers are parsed as such where possible.
###fulldata
is a nested data structure that organizes the data according to the
Experiment
's setup in the following hierarchy:
fulldata[range_val][rep][sumrange_val][callid][counter]
range_val
: The range value (orNone
).rep
: The repetition number.sumrange_val
: the sum-range value (orNone
).callid
: The call number.counterid
: Number of the PAPI counter (0
for cycle count).
When sumrange_parallel
or calls_parallel
are set, the levels
sumrange_val
and callid
are left out accordingly.
###data
is a nested data structure containing reduced data according to the Experiment
setup in the following hierarchy:
data[range_val][rep][callid][counter]
range_val
: The range value (orNone
).rep
: The repetition number.callid
: The call number orNone
for a sum across all calls.counter
: The PAPI event name,"cycles"
or"flops"
. The latter contains the number of floating point operations involved in the operation, provided that theCall
'sSignature
has itscomplexity
attribute set.
If calls_parallel
is set, the level callid
is left out.
The first repetition of an experiment is often an outlier due to, e.g., library
or cache initialization. discard_first_repetitions()
will discard each first
repetition within a Report
, resulting in a derived Report
object.
Metrics turn raw measurement data (i.e., cycle counts) into more meaningful
quantities, such as "Execution time in seconds" (seconds
) or "floating point
operations per cycle" (ipc
). A set of predefined metrics can be loaded using
elaps.io
's load_metric(name)
. Such a metric, which is essentially a python
function, can be applied to an experiment (or a subset of its calls) through
apply_metric(metric, callid)
. In addition to valid call numbers, callid
can
be None
to access the sum of all calls.
apply_metric()
returns a data structure with the following hierarchy:
metric_data[range_val][rep]
range_val
: The range value (orNone
).rep
: The repetition number.
The method apply_stat(stat_name, data)
applies a statistics to a data
structure as returned by a Report
's apply_metric()
. The following
stat_name
's are available:
"min"
: minimum,"med"
: median,"max"
: maximum,"avg"
: average or mean, and"std"
: standard deviation (square root of the variance).