diff --git a/predtuner/torchapp.py b/predtuner/torchapp.py index fbd52b4fda9199b853db156a19e82e5b2d9de65b..cb4a0a78f6422ac2e0de5cd8c74fcfcf89aaa90b 100644 --- a/predtuner/torchapp.py +++ b/predtuner/torchapp.py @@ -123,16 +123,21 @@ class TorchApp(ModeledApp, abc.ABC): def empirical_measure_qos_perf( self, with_approxes: KnobsT, is_testset: bool ) -> Tuple[float, float]: + from time import time_ns + dataloader = self.test_loader if is_testset else self.val_loader approxed = self._apply_knobs(with_approxes) qoses = [] + + time_begin = time_ns() / (10 ** 9) for inputs, targets in dataloader: inputs = move_to_device_recursively(inputs, self.device) targets = move_to_device_recursively(targets, self.device) outputs = approxed(inputs) qoses.append(self.tensor_to_qos(outputs, targets)) + time_end = time_ns() / (10 ** 9) qos = self.combine_qos(np.array(qoses)) - return float(qos), 0.0 # float64->float + return float(qos), time_end - time_begin # float64->float def __repr__(self) -> str: class_name = self.__class__.__name__ @@ -161,7 +166,9 @@ class TorchApp(ModeledApp, abc.ABC): if last_baseline_knob is None: last_baseline_knob = k else: - raise ValueError(f"Found more than 1 baseline knobs: {last_baseline_knob} and {k}") + raise ValueError( + f"Found more than 1 baseline knobs: {last_baseline_knob} and {k}" + ) if last_baseline_knob is None: knobs.add(BaselineKnob()) return knobs