From 2d3ee599c6dbfea15b05cb3112ab8f99f91fd300 Mon Sep 17 00:00:00 2001
From: Yifan Zhao <yifanz16@illinois.edu>
Date: Sun, 14 Mar 2021 01:16:57 -0600
Subject: [PATCH] User friendliness tweaks in PipedBinary app

---
 predtuner/approxapp.py | 2 +-
 predtuner/pipedbin.py  | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/predtuner/approxapp.py b/predtuner/approxapp.py
index 7564bb8..c0cd691 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 554ece7..cb066c9 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)
 
-- 
GitLab