Browse Source
remove the mtsubmit performance plotter which was based on a false assumption, modify the mtsubmit cost plotter for the new task set size
master
remove the mtsubmit performance plotter which was based on a false assumption, modify the mtsubmit cost plotter for the new task set size
master
Constantin Fürst
1 year ago
2 changed files with 3 additions and 93 deletions
-
6benchmarks/benchmark-plotters/plot-cost-mtsubmit.py
-
90benchmarks/benchmark-plotters/plot-perf-mtsubmit.py
@ -1,90 +0,0 @@ |
|||||
import os |
|
||||
import json |
|
||||
import pandas as pd |
|
||||
from itertools import chain |
|
||||
import seaborn as sns |
|
||||
import matplotlib.pyplot as plt |
|
||||
|
|
||||
runid = "Run ID" |
|
||||
x_label = "Thread Count" |
|
||||
y_label = "Throughput in GiB/s" |
|
||||
var_label = "Thread Counts" |
|
||||
thread_counts = ["1t", "2t", "4t", "8t", "12t"] |
|
||||
thread_counts_nice = ["1 Thread", "2 Threads", "4 Threads", "8 Threads", "12 Threads"] |
|
||||
engine_counts = ["1e", "4e"] |
|
||||
engine_counts_nice = ["1 Engine per Group", "4 Engines per Group"] |
|
||||
title = "Combined Throughput - Copy Operation Intra-Node on DDR with Size 1 MiB" |
|
||||
|
|
||||
index = [runid, x_label, var_label] |
|
||||
data = [] |
|
||||
|
|
||||
|
|
||||
def calc_throughput(size_bytes,time_microseconds): |
|
||||
time_seconds = time_microseconds * 1e-9 |
|
||||
size_gib = size_bytes / (1024 ** 3) |
|
||||
throughput_gibs = size_gib / time_seconds |
|
||||
return throughput_gibs |
|
||||
|
|
||||
|
|
||||
def index_from_element(value,array): |
|
||||
for (idx,val) in enumerate(array): |
|
||||
if val == value: return idx |
|
||||
return 0 |
|
||||
|
|
||||
|
|
||||
def load_and_process_copy_json(file_path): |
|
||||
with open(file_path, 'r') as file: |
|
||||
data = json.load(file) |
|
||||
|
|
||||
count = data["count"] |
|
||||
|
|
||||
return { |
|
||||
"combined" : [x / count for x in list(chain(*[data["list"][i]["report"]["time"]["combined"] for i in range(count)]))], |
|
||||
"submission" : [x / count for x in list(chain(*[data["list"][i]["report"]["time"]["submission"] for i in range(count)]))], |
|
||||
"completion" : [x / count for x in list(chain(*[data["list"][i]["report"]["time"]["completion"] for i in range(count)]))] |
|
||||
} |
|
||||
|
|
||||
# Function to plot the graph for the new benchmark |
|
||||
def create_mtsubmit_dataset(file_paths, engine_label): |
|
||||
times = [] |
|
||||
|
|
||||
engine_index = index_from_element(engine_label,engine_counts) |
|
||||
engine_nice = engine_counts_nice[engine_index] |
|
||||
|
|
||||
idx = 0 |
|
||||
for file_path in file_paths: |
|
||||
time = load_and_process_copy_json(file_path) |
|
||||
times.append(time["combined"]) |
|
||||
idx = idx + 1 |
|
||||
|
|
||||
throughput = [[calc_throughput(1024*1024,time) for time in t] for t in times] |
|
||||
|
|
||||
idx = 0 |
|
||||
for run_set in throughput: |
|
||||
run_idx = 0 |
|
||||
for run in run_set: |
|
||||
data.append({ runid : run_idx, x_label: thread_counts_nice[idx], var_label : engine_nice, y_label : throughput[idx][run_idx]}) |
|
||||
run_idx = run_idx + 1 |
|
||||
idx = idx + 1 |
|
||||
|
|
||||
|
|
||||
# Main function to iterate over files and create plots for the new benchmark |
|
||||
def main(): |
|
||||
folder_path = "benchmark-results/" # Replace with the actual path to your folder |
|
||||
|
|
||||
for engine_label in engine_counts: |
|
||||
mt_file_paths = [os.path.join(folder_path, f"mtsubmit-{thread_count}-{engine_label}.json") for thread_count in thread_counts] |
|
||||
create_mtsubmit_dataset(mt_file_paths, engine_label) |
|
||||
|
|
||||
df = pd.DataFrame(data) |
|
||||
df.set_index(index, inplace=True) |
|
||||
|
|
||||
sns.barplot(x=x_label, y=y_label, hue=var_label, data=df, palette="rocket", errorbar="sd") |
|
||||
|
|
||||
plt.title(title) |
|
||||
plt.savefig(os.path.join(folder_path, "plot-perf-mtsubmit.png"), bbox_inches='tight') |
|
||||
plt.show() |
|
||||
|
|
||||
|
|
||||
if __name__ == "__main__": |
|
||||
main() |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue