Skip to content
Snippets Groups Projects
Commit d1278234 authored by Yifan Zhao's avatar Yifan Zhao
Browse files

Merge branch 'hpvm-release/hotfix' into hpvm-release-exp

parents aede13c7 771a9e21
No related branches found
No related tags found
No related merge requests found
Subproject commit 108de0205d1f84082f9722d2e0e7b51dd5f8d997
Subproject commit 83e5ca83c83a69b6220ec4344ae31cac16fa8c46
......@@ -3,7 +3,8 @@
"name": "11",
"speedup": 1.0,
"applies_to": null,
"is_baseline": true
"is_baseline": true,
"devices": null
},
{
"name": "12",
......@@ -11,195 +12,439 @@
"applies_to": [
"convolution",
"linear"
]
],
"devices": ["gpu"]
},
{
"name": "121",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "122",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "123",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "124",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "125",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "126",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "127",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "128",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "129",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "130",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "131",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "132",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "133",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "134",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "135",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "136",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "137",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "138",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "231",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "232",
"speedup": 2,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "233",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "234",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "235",
"speedup": 1.5,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "236",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "237",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "238",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "239",
"speedup": 1.33,
"applies_to": [
"convolution"
],
"devices": ["cpu"]
},
{
"name": "151",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "152",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "153",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "154",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "155",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "156",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "157",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "158",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "159",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "160",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "161",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "162",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "163",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "164",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "165",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "166",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "167",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "168",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "261",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "262",
"speedup": 3.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "263",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "264",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "265",
"speedup": 2.25,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "266",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "267",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "268",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
},
{
"name": "269",
"speedup": 2.0,
"applies_to": [
"convolution"
]
],
"devices": ["gpu"]
}
]
......@@ -121,45 +121,47 @@ class ModelExporter:
with Path(approx_knobs_file).open() as f:
knobs = json.load(f)
KnobInfoT = Tuple[str, float]
ty_knobs: Dict[str, List[KnobInfoT]] = defaultdict(list)
default_knobs: List[KnobInfoT] = []
# 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:
kp = k["name"], k["speedup"]
name = k["name"]
if "is_baseline" in k:
if baseline_knob:
raise ValueError("Multiple baseline knobs")
baseline_knob = k["name"]
baseline_knob = name
applies_to = k["applies_to"]
if applies_to is None:
default_knobs.append(kp)
default_knobs.append(name)
continue
for ty in applies_to:
ty_knobs[ty].append(kp)
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]] = {}
knob_speedup: Dict[str, float] = {}
used_knobs = set()
for node in self.dfg.traverse_order:
if not node.hpvm_op_type:
continue
hpvm_op_name = f"{node.hpvm_op_type}_{idx}"
type_knobs = ty_knobs.get(node.hpvm_op_type, [])
this_op_knobs = type_knobs + default_knobs
knobs_speedup = dict(this_op_knobs)
op_knobs[hpvm_op_name] = type_knobs + default_knobs
op_cost[hpvm_op_name] = int(node.get_flops()) # May get np.int64
op_knobs[hpvm_op_name] = list(knobs_speedup.keys())
knob_speedup.update(knobs_speedup)
idx += 1
# Write out
with Path(output).open("w") as f:
json.dump(
{
"op_cost": op_cost,
"knob_speedup": knob_speedup,
"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,
**self.path_params,
},
......
......@@ -24,7 +24,7 @@ def main():
binary_file, exporter = dnn.export_example_dnn(netname, codegen_dir, True)
metadata_file = codegen_dir / exporter.metadata_file_name
# Tuning
app = PipedBinaryApp("test", binary_file, metadata_file)
app = PipedBinaryApp("test", binary_file, metadata_file, tuning_device="cpu")
tuner = app.get_tuner()
tuner.tune(
5,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment