diff --git a/predtuner/pipedbin.py b/predtuner/pipedbin.py index 8882370bb4fefeb430000809f909b34dbea62680..4aea660cfb508524772f46a8efc2d7c8c39cb46d 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()}