From a95a29828d0ecfeaef4d045de35351b4a9aa9bb6 Mon Sep 17 00:00:00 2001
From: Yifan Zhao <yifanz16@illinois.edu>
Date: Sat, 23 Jan 2021 06:36:53 -0600
Subject: [PATCH] Default model-less performance is given by measuring time

---
 predtuner/torchapp.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/predtuner/torchapp.py b/predtuner/torchapp.py
index fbd52b4..cb4a0a7 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
-- 
GitLab