From 1ec7d438b20a321e3395cb2142ebee9dcad679ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantin=20F=C3=BCrst?= Date: Sun, 21 Jan 2024 21:54:35 +0100 Subject: [PATCH] rework the multithread benchmark plot to be more compact for use in the thesis --- .../benchmark-plots/plot-perf-mtsubmit.png | Bin 38179 -> 16712 bytes .../__pycache__/common.cpython-39.pyc | Bin 0 -> 579 bytes .../benchmark-plotters/plot-cost-mtsubmit.py | 11 +++++------ thesis/images/plot-perf-mtsubmit.png | Bin 0 -> 16712 bytes 4 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 benchmarks/benchmark-plotters/__pycache__/common.cpython-39.pyc create mode 100644 thesis/images/plot-perf-mtsubmit.png diff --git a/benchmarks/benchmark-plots/plot-perf-mtsubmit.png b/benchmarks/benchmark-plots/plot-perf-mtsubmit.png index 65f8069b38ae1782a0e61227667050411cfb77df..aefc71092196278b624258dab97940272165e60f 100644 GIT binary patch literal 16712 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 literal 0 HcmV?d00001 diff --git a/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py b/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py index 09257f7..2d1ece5 100644 --- a/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py +++ b/benchmarks/benchmark-plotters/plot-cost-mtsubmit.py @@ -10,11 +10,11 @@ from common import calc_throughput, index_from_element 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 = ["1mib-1e", "1mib-4e", "1gib-1e", "1gib-4e"] -engine_counts_nice = ["1 E/WQ and 1 MiB", "4 E/WQ and 1 MiB", "1 E/WQ and 1 GiB", "4 E/WQ and 1 GiB"] +var_label = "Transfer Size" +thread_counts = ["1t", "2t", "12t"] +thread_counts_nice = ["1 Thread", "2 Threads", "12 Threads"] +engine_counts = ["1mib-1e", "1gib-1e"] +engine_counts_nice = ["1 MiB", "1 GiB"] title = \ """Total Throughput showing cost of MT Submit\n @@ -94,7 +94,6 @@ def main(): 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(output_path, "plot-perf-mtsubmit.png"), bbox_inches='tight') plt.show() diff --git a/thesis/images/plot-perf-mtsubmit.png b/thesis/images/plot-perf-mtsubmit.png new file mode 100644 index 0000000000000000000000000000000000000000..aefc71092196278b624258dab97940272165e60f GIT binary patch literal 16712 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 yB|3pKJ2x4j3>~mVD2_-*INAQc`q{I0fH75%