46 lines
1.2 KiB
Python
Executable File
46 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import csv
|
|
import os
|
|
|
|
root = os.path.dirname(os.path.dirname(__file__))
|
|
src = os.path.join(root, "results", "phase3_summary_energy.csv")
|
|
dst = os.path.join(root, "results", "phase3_drowsy_deltas.csv")
|
|
|
|
# group by key without drowsy; compare d0 vs d1
|
|
from collections import defaultdict
|
|
|
|
bykey = defaultdict(dict)
|
|
|
|
with open(src) as f:
|
|
r = csv.DictReader(f)
|
|
for row in r:
|
|
key = (row["workload"], row["core"], row["dvfs"], row["l2"])
|
|
bykey[key][row["drowsy"]] = row
|
|
|
|
rows = []
|
|
for k, d in bykey.items():
|
|
if "0" in d and "1" in d:
|
|
a = d["0"]
|
|
b = d["1"]
|
|
e0 = float(a["energy_J"])
|
|
e1 = float(b["energy_J"])
|
|
edp0 = float(a["edp"])
|
|
edp1 = float(b["edp"])
|
|
rows.append(
|
|
{
|
|
"workload": k[0],
|
|
"core": k[1],
|
|
"dvfs": k[2],
|
|
"l2": k[3],
|
|
"energy_drop_%": f"{100*(e0-e1)/e0:.2f}",
|
|
"edp_drop_%": f"{100*(edp0-edp1)/edp0:.2f}",
|
|
}
|
|
)
|
|
|
|
with open(dst, "w", newline="") as f:
|
|
w = csv.DictWriter(f, fieldnames=list(rows[0].keys()))
|
|
w.writeheader()
|
|
w.writerows(rows)
|
|
|
|
print(f"[delta] wrote {dst}")
|