| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import pickle
- import pandas as pd
- def get_average_active_secs(df, repeat=1):
- mask = (df > 0.005) & (df < 0.020)
- active = df[mask]
- secs = len(active) / 1000
- return secs / repeat
- def analyze_benchmark(benchmark):
- with open(f"output/test_1_{benchmark}_original.pickle", "rb") as f:
- d1 = pickle.load(f)
- with open(f"output/test_1_{benchmark}_ckpt.pickle", "rb") as f:
- d2 = pickle.load(f)
-
- avg_orig = get_average_active_secs(d1, 2)
- avg_ckpt = get_average_active_secs(d2, 5)
- return avg_orig, avg_ckpt
- def do_analysis(benchmarks):
- results = []
- for benchmark in benchmarks:
- try:
- avg_orig, avg_ckpt = analyze_benchmark(benchmark)
- except:
- continue
- results.append({
- "benchmark": benchmark,
- "original (s)": avg_orig,
- "ckpt (s)": avg_ckpt,
- "overhead (%)": ((avg_ckpt / avg_orig) - 1) * 100,
- })
- d = pd.DataFrame(results)
- print(d)
- avg_overhead = d["overhead (%)"].mean()
- print(f"average overhead: {avg_overhead:.2f}%")
- def main():
- benchmarks = ["vFFT", "vConv2d", "vCrc", "vBasicMath", "vSha", "vStringSearch", "vAes", "vMatMul"]
- benchmarks = ["vFFT", "vCrc", "vBasicMath", "vSha"]
- do_analysis(benchmarks)
- if __name__ == "__main__":
- main()
|