Source code for habitat.analysis.kernels



[docs]class MeasuredKernel: def __init__(self, time_kernel, metrics_kernels, device): self._c = time_kernel self._metrics_kernels = metrics_kernels self._device = device self._cached_metrics = {}
[docs] def get_metric(self, metric_info, default=None): if metric_info in self._cached_metrics: return self._cached_metrics[metric_info] for metric_kernel in self._metrics_kernels: for raw_metric_name, raw_metric_value in metric_kernel.metrics: if (raw_metric_name == metric_info.value.cupti_name or raw_metric_name == metric_info.value.legacy_cupti_name): canonical_value = metric_info.value.to_canonical_value( raw_metric_value, self._device) self._cached_metrics[metric_info] = canonical_value return canonical_value if default is None: raise AttributeError('Unknown metric: {}'.format(metric_info.name)) return default
[docs] def __getattr__(self, name): # Delegate to the underlying C++ object for non-overridden attributes return getattr(self._c, name)
[docs]class PredictedKernel: def __init__(self, measured_kernel, run_time_ns): self._measured_kernel = measured_kernel self._run_time_ns = run_time_ns @property
[docs] def run_time_ns(self): return self._run_time_ns
@property
[docs] def name(self): return self._measured_kernel.name