test_2_analysis.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import pickle
  2. import pandas as pd
  3. def get_average_active_secs(df, repeat=1):
  4. mask = (df > 0.005) & (df < 0.020)
  5. active = df[mask]
  6. secs = len(active) / 1000
  7. return secs / repeat
  8. def analyze_benchmark(benchmark):
  9. with open(f"output/test_2_{benchmark}_ckpt.pickle", "rb") as f:
  10. d = pickle.load(f)
  11. d = d.sort_values(by=["time_taken"], ascending=False)
  12. columns = ["bench_name", "time_taken", "outputs", "is_correct"]
  13. sla_values = {
  14. "vFFT": 1.42,
  15. "vCrc": 1.48,
  16. "vAes": 1.35,
  17. "vSha": 1.66,
  18. }
  19. sla = sla_values[benchmark]
  20. print(f"\n+++ benchmark {benchmark} +++")
  21. print(f"SLA: {sla}")
  22. print(d[columns])
  23. mask = d["time_taken"] < sla
  24. n_total = len(d)
  25. n_passed = len(d[mask])
  26. print("")
  27. print(f"{n_passed} passed (total {n_total})")
  28. return n_total, n_passed
  29. def do_analysis(benchmarks):
  30. results = []
  31. for benchmark in benchmarks:
  32. try:
  33. n_total, n_passed = analyze_benchmark(benchmark)
  34. except:
  35. continue
  36. results.append({
  37. "benchmark": benchmark,
  38. "total": n_total,
  39. "passed": n_passed,
  40. "pass rate (%)": (n_passed / n_total) * 100,
  41. })
  42. d = pd.DataFrame(results)
  43. avg_pass_rate = d["pass rate (%)"].mean()
  44. print("\n\n+++ summary +++\n")
  45. print(d)
  46. print("")
  47. print(f"average pass rate: {avg_pass_rate:.2f}%")
  48. def main():
  49. benchmarks = ["vFFT", "vConv2d", "vCrc", "vBasicMath", "vSha", "vStringSearch", "vAes", "vMatMul"]
  50. benchmarks = ["vFFT", "vCrc", "vAes", "vSha"]
  51. do_analysis(benchmarks)
  52. if __name__ == "__main__":
  53. main()