diff --git a/hpvm/projects/predtuner b/hpvm/projects/predtuner index 83e5ca83c83a69b6220ec4344ae31cac16fa8c46..7159825f27ee7b3c5731ee1b9418c6eafda6622a 160000 --- a/hpvm/projects/predtuner +++ b/hpvm/projects/predtuner @@ -1 +1 @@ -Subproject commit 83e5ca83c83a69b6220ec4344ae31cac16fa8c46 +Subproject commit 7159825f27ee7b3c5731ee1b9418c6eafda6622a diff --git a/hpvm/projects/torch2hpvm/torch2hpvm/approxknobs.json b/hpvm/projects/torch2hpvm/torch2hpvm/approxknobs.json index 64f4e8816b07208d03ccab98624c6c0e477f8e98..4d254610d29969b3766b1f9db9a1f105fb8fda1d 100644 --- a/hpvm/projects/torch2hpvm/torch2hpvm/approxknobs.json +++ b/hpvm/projects/torch2hpvm/torch2hpvm/approxknobs.json @@ -1,450 +1,504 @@ -[ - { - "name": "11", +{ + "11": { "speedup": 1.0, "applies_to": null, - "is_baseline": true, - "devices": null + "baseline_priority": 1, + "devices": [ + "cpu" + ] }, - { - "name": "12", + "12": { "speedup": 1.5, - "applies_to": [ - "convolution", - "linear" - ], - "devices": ["gpu"] + "applies_to": null, + "baseline_priority": 0, + "devices": [ + "gpu" + ] }, - { - "name": "121", + "121": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "122", + "122": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "123", + "123": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "124", + "124": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "125", + "125": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "126", + "126": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "127", + "127": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "128", + "128": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "129", + "129": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "130", + "130": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "131", + "131": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "132", + "132": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "133", + "133": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "134", + "134": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "135", + "135": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "136", + "136": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "137", + "137": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "138", + "138": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "231", + "231": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "232", + "232": { "speedup": 2, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "233", + "233": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "234", + "234": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "235", + "235": { "speedup": 1.5, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "236", + "236": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "237", + "237": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "238", + "238": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "239", + "239": { "speedup": 1.33, "applies_to": [ "convolution" - ], - "devices": ["cpu"] + ], + "devices": [ + "cpu" + ] }, - { - "name": "151", + "151": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "152", + "152": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "153", + "153": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "154", + "154": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "155", + "155": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "156", + "156": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "157", + "157": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "158", + "158": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "159", + "159": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "160", + "160": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "161", + "161": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "162", + "162": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "163", + "163": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "164", + "164": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "165", + "165": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "166", + "166": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "167", + "167": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "168", + "168": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "261", + "261": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "262", + "262": { "speedup": 3.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "263", + "263": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "264", + "264": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "265", + "265": { "speedup": 2.25, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "266", + "266": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "267", + "267": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "268", + "268": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] }, - { - "name": "269", + "269": { "speedup": 2.0, "applies_to": [ "convolution" - ], - "devices": ["gpu"] + ], + "devices": [ + "gpu" + ] } -] +} \ No newline at end of file diff --git a/hpvm/projects/torch2hpvm/torch2hpvm/compile.py b/hpvm/projects/torch2hpvm/torch2hpvm/compile.py index 044eaa10f8632a889dc7183e79b60f409fc21d2d..a3865a007c86605ba044f91f6fa3d6202bd2110c 100644 --- a/hpvm/projects/torch2hpvm/torch2hpvm/compile.py +++ b/hpvm/projects/torch2hpvm/torch2hpvm/compile.py @@ -120,31 +120,22 @@ class ModelExporter: from collections import defaultdict with Path(approx_knobs_file).open() as f: - knobs = json.load(f) + knobs = json.load(f) # knob name to knob attrs dict # Organize knobs into defaults and the ones for certain types ty_knobs: Dict[str, str] = defaultdict(list) default_knobs: List[str] = [] - baseline_knob = None - for k in knobs: - name = k["name"] - if "is_baseline" in k: - if baseline_knob: - raise ValueError("Multiple baseline knobs") - baseline_knob = name - applies_to = k["applies_to"] + for name, attrs in knobs.items(): + applies_to = attrs.pop("applies_to") if applies_to is None: default_knobs.append(name) continue for ty in applies_to: ty_knobs[ty].append(name) - if not baseline_knob: - raise ValueError("No baseline knob given") # Enumerate operators and find knobs for each idx = 0 op_cost: Dict[str, int] = {} op_knobs: Dict[str, List[str]] = {} - used_knobs = set() for node in self.dfg.traverse_order: if not node.hpvm_op_type: continue @@ -160,9 +151,7 @@ class ModelExporter: { "op_cost": op_cost, "op_knobs": op_knobs, - "knob_speedup": {k["name"]: k["speedup"] for k in knobs}, - "knob_devices": {k["name"]: k["devices"] for k in knobs}, - "baseline_knob": baseline_knob, + "knobs": knobs, **self.path_params, }, f,