diff --git a/predtuner/approxapp.py b/predtuner/approxapp.py index 7564bb81a61f2c6a31b982c28b9be6eb4c21d426..c0cd6910b0c4c33a232482950091d38d3b9ea6c4 100644 --- a/predtuner/approxapp.py +++ b/predtuner/approxapp.py @@ -110,7 +110,7 @@ class Config: ) -> None: self.qos = qos self.perf = perf - self.knobs = knobs + self.knobs = dict(sorted(knobs.items())) self.test_qos: Optional[float] = test_qos diff --git a/predtuner/pipedbin.py b/predtuner/pipedbin.py index 554ece787c84430c7624a0fb489ba8a3162159e3..cb066c9ef2292d7387296b2de6427f8d58496526 100644 --- a/predtuner/pipedbin.py +++ b/predtuner/pipedbin.py @@ -122,8 +122,7 @@ class PipedBinaryApp(ModeledApp): def _stop_binary(self): if self.process.poll() is not None: return - with self.fifo_w_file.open("w") as f: - f.write("stop") + self.process.terminate() def _check_running(self): return_code = self.process.poll() @@ -189,6 +188,8 @@ def parse_hpvm_tensor(buffer: bytes) -> torch.Tensor: data = np.frombuffer(buffer, dtype=np.float32, offset=offset, count=nelem) offset += nelem * 4 batches.append(data.reshape(*dims)) + if not batches: + raise ValueError("No tensor returned from HPVM binary") batches = np.concatenate(batches, axis=0) return torch.from_numpy(batches).squeeze(-1).squeeze(-1)