From 4e8109101d2a29ad1b041b8ce98e7363e065dcf6 Mon Sep 17 00:00:00 2001
From: Yifan Zhao <yifanz16@illinois.edu>
Date: Thu, 18 Mar 2021 16:52:43 -0500
Subject: [PATCH] Added (partial) support for tuning device

---
 predtuner/pipedbin.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/predtuner/pipedbin.py b/predtuner/pipedbin.py
index 8882370..4aea660 100644
--- a/predtuner/pipedbin.py
+++ b/predtuner/pipedbin.py
@@ -6,7 +6,7 @@ from typing import Dict, List, Optional, Sequence, Tuple, Union
 import numpy as np
 import torch
 
-from .approxapp import ApproxKnob, BaselineKnob, KnobsT
+from .approxapp import ApproxKnob, KnobsT
 from .modeledapp import (
     IPerfModel,
     IQoSModel,
@@ -29,6 +29,7 @@ class PipedBinaryApp(ModeledApp):
         metadata_path: PathLike,
         base_dir: PathLike = None,
         qos_relpath: PathLike = "final_accuracy",
+        tuning_device: str = None,
         model_storage_folder: Optional[PathLike] = None,
     ):
         self.app_name = app_name
@@ -54,7 +55,7 @@ class PipedBinaryApp(ModeledApp):
         if not self.binary_path.is_file():
             raise RuntimeError(f"Binary file {self.binary_path} not found")
 
-        super().__init__(op_knobs)  # Init here
+        super().__init__(op_knobs, tuning_device)  # Init here
         self.knob_exporter = HPVMConfigBuilder(list(op_knobs.keys()))
         self.process = None
         self._invoke_binary()
@@ -178,7 +179,7 @@ class PipedBinaryApp(ModeledApp):
             raise ValueError(f"baseline_knob {baseline_knob} is undefined")
         # Create actual knob object from knob names
         name2knob = {
-            s: BaselineKnob(s) if s == baseline_knob else ApproxKnob(s)
+            s: ApproxKnob(s, baseline_priority=(0 if s == baseline_knob else None))
             for s in knobs_used
         }
         op_knobs = {op: [name2knob[k] for k in knobs] for op, knobs in op_knobs.items()}
-- 
GitLab