blob: 860dc6591d2ea939f8632b28084ef1646126b094 [file] [log] [blame]
"""
This file will take the csv outputs from server.py, calculate the mean and
variance of the warmup_latency, average_latency, throughput and gpu_util
and write these to the corresponding `results/output_{batch_size}_{compile}.md`
file, appending to the file if it exists or creatng a new one otherwise.
"""
import argparse
import os
import pandas as pd
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Parse output files")
parser.add_argument("--csv", type=str, help="Path to csv file")
parser.add_argument("--name", type=str, help="Name of experiment")
args = parser.parse_args()
input_csv = "./results/" + args.csv
df = pd.read_csv(input_csv)
batch_size = int(os.path.basename(args.csv).split("_")[1])
compile = os.path.basename(args.csv).split("_")[-1].split(".")[0]
# Calculate mean and standard deviation for a subset of metrics
metrics = ["warmup_latency", "average_latency", "throughput", "gpu_util"]
means = dict()
stds = dict()
for metric in metrics:
means[metric] = df[metric].mean()
stds[metric] = df[metric].std()
output_md = f"results/output_{batch_size}_{compile}.md"
write_header = os.path.isfile(output_md) is False
with open(output_md, "a+") as f:
if write_header:
f.write(f"## Batch Size {batch_size} Compile {compile}\n\n")
f.write(
"| Experiment | Warmup_latency (s) | Average_latency (s) | Throughput (samples/sec) | GPU Utilization (%) |\n"
)
f.write(
"| ---------- | ------------------ | ------------------- | ------------------------ | ------------------- |\n"
)
line = f"| {args.name} |"
for metric in metrics:
line += f" {means[metric]:.3f} +/- {stds[metric]:.3f} |"
f.write(line + "\n")