Source code for habitat.analysis.trace
from itertools import chain
from habitat.analysis.predictor import Predictor
[docs]class Trace:
"""
Represents an operation trace that was measured on a given device.
"""
# Used by default to make cross-device predictions.
[docs] DefaultPredictor = Predictor()
def __init__(self, device, operations):
self._device = device
self._operations = operations
self._run_time_ms = None
@property
[docs] def operations(self):
return self._operations
@property
[docs] def device(self):
return self._device
@property
[docs] def run_time_ms(self):
if self._run_time_ms is not None:
return self._run_time_ms
self._run_time_ms = sum(map(
lambda op: op.run_time_ms,
self._operations,
))
return self._run_time_ms
[docs] def to_device(self, dest_device, predictor=None):
"""Get a predicted trace for the specified device."""
print(f"Cross-device prediction: {self.device.name} -> {dest_device.name}")
if dest_device.name == self.device.name:
return self
actual_predictor = (
Trace.DefaultPredictor if predictor is None else predictor
)
operations = [
operation.to_device(dest_device, actual_predictor)
for operation in self._operations
]
return Trace(dest_device, operations)