Browse Source

use throughput as unit for benchmarks

master
Constantin Fürst 1 year ago
parent
commit
d77230dece
  1. 13
      benchmarks/benchmark-plotters/plot-cost-mtsubmit.py
  2. 13
      benchmarks/benchmark-plotters/plot-perf-enginelocation.py
  3. 12
      benchmarks/benchmark-plotters/plot-perf-submitmethod.py
  4. BIN
      benchmarks/benchmark-results/cross-copy-bench/plot-perf-enginelocation.png
  5. BIN
      benchmarks/benchmark-results/mtsubmit-bench/plot-cost-mtsubmit.png
  6. BIN
      benchmarks/benchmark-results/submit-bench/plot-perf-submitmethod.png

13
benchmarks/benchmark-plotters/plot-cost-mtsubmit.py

@ -6,7 +6,7 @@ import seaborn as sns
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
x_label = "Copy Type" x_label = "Copy Type"
y_label = "Time in Microseconds"
y_label = "Throughput in GiB/s"
var_label = "Thread Counts" var_label = "Thread Counts"
thread_counts = ["1t", "2t", "4t", "8t", "12t"] thread_counts = ["1t", "2t", "4t", "8t", "12t"]
thread_counts_nice = ["1 Thread", "2 Threads", "4 Threads", "8 Threads", "12 Threads"] thread_counts_nice = ["1 Thread", "2 Threads", "4 Threads", "8 Threads", "12 Threads"]
@ -21,6 +21,13 @@ data = {
} }
def calc_throughput(size_bytes,time_microseconds):
time_seconds = time_microseconds * 1e-6
size_gib = size_bytes / (1024 ** 3)
throughput_gibs = size_gib / time_seconds
return throughput_gibs
def index_from_element(value,array): def index_from_element(value,array):
for (idx,val) in enumerate(array): for (idx,val) in enumerate(array):
if val == value: return idx if val == value: return idx
@ -56,7 +63,9 @@ def plot_mt_graph(file_paths, engine_label):
engine_index = index_from_element(engine_label,engine_counts) engine_index = index_from_element(engine_label,engine_counts)
engine_nice = engine_counts_nice[engine_index] engine_nice = engine_counts_nice[engine_index]
data[engine_nice] = times
throughput = [calc_throughput(1024*1024, t) for t in times]
data[engine_nice] = throughput
# Main function to iterate over files and create plots for the new benchmark # Main function to iterate over files and create plots for the new benchmark

13
benchmarks/benchmark-plotters/plot-perf-enginelocation.py

@ -6,7 +6,7 @@ import seaborn as sns
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
x_label = "Copy Type" x_label = "Copy Type"
y_label = "Time in Microseconds"
y_label = "Throughput in GiB/s"
var_label = "Configuration" var_label = "Configuration"
types = ["intersock-n0ton4", "internode-n0ton1"] types = ["intersock-n0ton4", "internode-n0ton1"]
types_nice = ["Inter-Socket Copy", "Inter-Node Copy"] types_nice = ["Inter-Socket Copy", "Inter-Node Copy"]
@ -22,6 +22,13 @@ data = {
} }
def calc_throughput(size_bytes,time_microseconds):
time_seconds = time_microseconds * 1e-6
size_gib = size_bytes / (1024 ** 3)
throughput_gibs = size_gib / time_seconds
return throughput_gibs
def index_from_element(value,array): def index_from_element(value,array):
for (idx,val) in enumerate(array): for (idx,val) in enumerate(array):
if val == value: return idx if val == value: return idx
@ -58,7 +65,9 @@ def plot_copy_graph(file_paths, method_label):
method_index = index_from_element(method_label,copy_methods) method_index = index_from_element(method_label,copy_methods)
method_nice = copy_methods_nice[method_index] method_nice = copy_methods_nice[method_index]
data[method_nice] = times
throughput = [calc_throughput(1024*1024, t) for t in times]
data[method_nice] = throughput
# Main function to iterate over files and create plots for the new benchmark # Main function to iterate over files and create plots for the new benchmark

12
benchmarks/benchmark-plotters/plot-perf-submitmethod.py

@ -7,7 +7,7 @@ import seaborn as sns
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
x_label = "Size of Submitted Task" x_label = "Size of Submitted Task"
y_label = "Time to Copy 1 KiB in Microseconds"
y_label = "Throughput in GiB/s"
var_label = "Submission Type" var_label = "Submission Type"
sizes = ["1kib", "4kib", "1mib", "1gib"] sizes = ["1kib", "4kib", "1mib", "1gib"]
sizes_nice = ["1 KiB", "4 KiB", "1 MiB", "1 GiB"] sizes_nice = ["1 KiB", "4 KiB", "1 MiB", "1 GiB"]
@ -26,6 +26,12 @@ data = {
stdev = {} stdev = {}
def calc_throughput(size_bytes,time_microseconds):
time_seconds = time_microseconds * 1e-6
size_gib = size_bytes / (1024 ** 3)
throughput_gibs = size_gib / time_seconds
return throughput_gibs
def index_from_element(value,array): def index_from_element(value,array):
for (idx,val) in enumerate(array): for (idx,val) in enumerate(array):
@ -73,7 +79,9 @@ def plot_submit_graph(file_paths, type_label):
times[2] = times[2] / 1024 times[2] = times[2] / 1024
times[3] = times[3] / (1024 * 1024) times[3] = times[3] / (1024 * 1024)
data[type_nice] = times
throughput = [calc_throughput(1024,t) for t in times]
data[type_nice] = throughput
# Main function to iterate over files and create plots for the new benchmark # Main function to iterate over files and create plots for the new benchmark

BIN
benchmarks/benchmark-results/cross-copy-bench/plot-perf-enginelocation.png

Before

Width: 760  |  Height: 510  |  Size: 34 KiB

After

Width: 760  |  Height: 510  |  Size: 32 KiB

BIN
benchmarks/benchmark-results/mtsubmit-bench/plot-cost-mtsubmit.png

Before

Width: 791  |  Height: 510  |  Size: 31 KiB

After

Width: 788  |  Height: 510  |  Size: 32 KiB

BIN
benchmarks/benchmark-results/submit-bench/plot-perf-submitmethod.png

Before

Width: 765  |  Height: 510  |  Size: 38 KiB

After

Width: 768  |  Height: 510  |  Size: 35 KiB

Loading…
Cancel
Save