STM Analytics generates a graph structure for presenting output information, which is captured by the output pickle. The CSV and HTML reports only provide a subset of metrics that can be extracted from the pickle.
This page provides information about the higher-level structure of the report, which leverages analytics primitives as defined here: Analyzed Graph Primitives.
At the top level, the analytics pickle is a dictonary of the schedule IDs present in the *.stm schedules that map to AnalyzedSchedule objects such as shown below:
AnalyzedScheduleId0: AnalyzedSchedule0 AnalyzedScheduleId1: AnalyzedSchedule1
The AnalyzedSchedule contains execution information about the hyperepochs, epochs and runnables within that schedule.
It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the schedule. |
schedule_identifier | int | The numerical identifier associated with the schedule defined in the input graph |
hyperepochs | list(AnalyzedHyperepoch) | A list of AnalyzedHyperepochs that contains execution information about hyperepochs and epochs |
clients | list(AnalyzedClient) | A list of AnalyzedClients that contains execution information about runnables per client |
schedule_version | tuple(int, int, int) | A tuple of 3 integers marking the STM Compiler version used to generate the schedule |
log_version | tuple(int, int, int) | A tuple of 3 integers marking the STM Runtime version used to generate the runtime log |
The AnalyzedHyperepoch contains execution information about the epochs in the hyperepoch, and also about the critical paths present in the execution of the application.
It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the hyperepoch |
resources | list(str) | A list of strings naming the resources used by this hyperepoch. |
schedule_length | int | The schedule length of the hyperepoch in nanoseconds. |
epochs | list(AnalyzedEpoch) | A list of AnalyzedEpochs that contains execution information abou the epochs |
resource_metrics | list(AnalyzedResource) | A list of AnalyzedResources that describes the runtime behaviour of this hyperepoch when viewed over different sets of resources. |
pre_compilation_critical_path_info | CriticalPathInfo | A CriticalPathInfo object that provides information about runnables that were present in the critical path(s) of the original DAG before STM Compiler's schedule generation. |
post_compilation_critical_path_info | CriticalPathInfo | A CriticalPathInfo object that provides information about runnables that are present in the critical path(s) of the compiled schedule after the STM Compiler's schedule generation. |
runtime_critical_path_info | CriticalPathInfo | Information about runnables that are present in the critical path(s) as observed in the executed schedule. |
run_info | RunInformationFull | Runtime statistics about this hyperepoch. |
The AnalyzedEpoch contains execution information about an epoch. It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the epoch |
period | int | The period defined for the epoch in nanoseconds |
frames | int | The number of times this epoch repeats within the hyperepoch |
run_infos | list(RunInformationFull) | The information pertaining to the executed runtime instance. Each execution instance in a multi-epoch run has its own associated entry within the run info list. |
The AnalyzedResource contains execution and utilization information about a resource. It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the resource |
mean_utilization_frac | float | The mean fraction of time during which the resource was busy during the entire run across all frames. |
mean_internal_fragmentation_frac | float | Internal fragmentation refers to the difference between executed time and scheduled time. This variable contains the mean of the aggregate duration of runnables on this resource, divided by the aggregate scheduled duration of runnables on this resource. In other words, 1 - mean(aggregate runnable duration / aggregate scheduled runnable duration). The result isclipped at 0, such that overruns will not result in a value less than that. The mean is computed over all frames |
mean_external_fragmentation_frac | float | External fragmentation refers to the difference between scheduled runnable time and scheduled hyperepoch time. This variable contains the mean of the aggregate scheduled duration of runnables on this resource, divided by the scheduled duration of the hyperepoch which this resource belongs to. In other words, 1 - mean(aggregate scheduled runnable duration / aggregate scheduled hyperepoch duration). The result is clipped at 0, such that overruns will not result in a value less than that. The mean is computed over all frames |
duration_stats | Statistics | The statistics relating to the aggregate runnable durations on this resource. |
The AnalyzedClient object contains information about the client and the runnables contained inside it. It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the client. |
resources | list(str) | A list of resources used by this client |
runnables | list(AnalyzedRunnable) | A list of AnalyzedRunnable objects for each runnable belonging to this client |
The AnalyzedRunnable object contains statistical information about the execution behavior of the runnable. It has the following fields:
Field | Type | Description |
---|---|---|
id_ | str | The name of the runnable |
start | int | The scheduled start time of the runnable in nanoseconds |
end | int | The scheduled end time of the runnable in nanoseconds |
runnable_type | str | The type of the runnable |
resources | list(str) | The list of resources used by this runnable |
priority | int | The priority of the runnable |
submittee_id | str | The id of the submittee if this runnable is a submitter |
frame_id | int | An integer representing the epoch frame this runnable belongs to inside a hyperepoch |
modulo | int | Size of the step group, if this runnable is round-robinned |
step | list(int) | List of indices for which the runnable executes |
alias_group | str | Alias group of the runnable, if it is round-robinned |
run_info | RunInformationFull | Execution information about this runnable without STM Overhead information |
run_info_with_overhead | RunInformationFull | Execution information about this runnable along with the associated STM Overhead for it |