Source code for habitat.analysis.run_time
from habitat.analysis.kernels import MeasuredKernel
from habitat.utils import ns_to_ms
[docs]class RunTime:
@property
[docs] def run_time_ms(self):
raise NotImplementedError
@property
[docs] def ktime_ns(self):
return sum(map(lambda k: k.run_time_ns, self.kernels))
@property
[docs] def kernels(self):
return []
@property
[docs] def device(self):
raise NotImplementedError
[docs]class RunTimeMeasurement(RunTime):
def __init__(self, run_time_ms, kernels, device):
self._run_time_ms = run_time_ms
self._kernels = kernels
self._device = device
@property
[docs] def run_time_ms(self):
return self._run_time_ms
@property
[docs] def kernels(self):
return self._kernels
@property
[docs] def device(self):
return self._device
[docs]class RunTimePrediction(RunTime):
def __init__(self, overhead_ns, predicted_kernels, device):
self._run_time_ms = None
self._overhead_ns = overhead_ns
self._predicted_kernels = predicted_kernels
self._device = device
@property
[docs] def run_time_ms(self):
if self._run_time_ms is not None:
return self._run_time_ms
run_time_ns = self._overhead_ns + sum(map(
lambda k: k.run_time_ns,
self.kernels,
))
self._run_time_ms = ns_to_ms(run_time_ns)
return self._run_time_ms
@property
[docs] def kernels(self):
return self._predicted_kernels
@property
[docs] def device(self):
return self._device
[docs]class RunTimePurePrediction(RunTime):
def __init__(self, run_time_ms, device):
self._run_time_ms = run_time_ms
self._device = device
@property
[docs] def run_time_ms(self):
if self._run_time_ms is not None:
return self._run_time_ms
run_time_ns = self._overhead_ns + sum(map(
lambda k: k.run_time_ns,
self.kernels,
))
self._run_time_ms = ns_to_ms(run_time_ns)
return self._run_time_ms
@property
[docs] def device(self):
return self._device