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

Changing metadata protocol

parent 617927d5
No related branches found
No related tags found
No related merge requests found
......@@ -165,37 +165,31 @@ class PipedBinaryApp(ModeledApp):
metadata = json.load(f)
op_costs = metadata["op_cost"]
op_knobs = metadata["op_knobs"]
knob_speedup = metadata["knob_speedup"]
knob_devices = metadata["knob_devices"]
baseline_knob = metadata["baseline_knob"]
knobs = metadata["knobs"]
# Check sanity
if set(op_costs.keys()) != set(op_knobs.keys()):
raise ValueError(
"Operators listed in layer_cost and knobs_of_layer mismatch"
)
if set(knob_speedup.keys()) != set(knob_devices.keys()):
raise ValueError(
"Knobs listed in knob_speedup and knob_devices mismatch"
)
knobs_used = set().union(*[set(knobs) for knobs in op_knobs.values()])
knobs_defined = set(knob_speedup.keys())
knobs_defined = set(knobs.keys())
undefined = knobs_used - knobs_defined
if undefined:
raise ValueError(
f"These knobs used in knobs_of_layer are undefined: {undefined}"
)
if baseline_knob not in knobs_defined:
raise ValueError(f"baseline_knob {baseline_knob} is undefined")
# Create actual knob object from knob names
name2knob = {
s: ApproxKnob(s, knob_devices[s], (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()}
knob_objs = {}
knob_speedup = {}
for knob_name, knob_args in knobs.items():
knob_speedup[knob_name] = knob_args.pop("speedup")
knob_objs[knob_name] = ApproxKnob(knob_name, **knob_args)
op_knobs = {op: [knob_objs[k] for k in knobs] for op, knobs in op_knobs.items()}
# Process other fields in metadata
tune_labels_file = Path(metadata["tune_labels_path"])
tune_labels = torch.from_numpy(np.fromfile(tune_labels_file, dtype=np.int32))
conf_file = Path(metadata["conf_path"])
# Our "w" file is the binary's "r" file, vice versa
# -- Our "w" file is the binary's "r" file, vice versa
fifo_r_file = Path(metadata["fifo_path_w"])
fifo_w_file = Path(metadata["fifo_path_r"])
return (
......
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