experiments #1
200
data/evaluate_full_node_bench.jl
Normal file
200
data/evaluate_full_node_bench.jl
Normal file
@ -0,0 +1,200 @@
|
||||
using CSV
|
||||
using DataFrames
|
||||
using Plots
|
||||
using StatsPlots
|
||||
using LaTeXStrings
|
||||
|
||||
if (length(ARGS) < 1)
|
||||
println("Please use with \"input_file.csv\"")
|
||||
end
|
||||
|
||||
processes = [
|
||||
"QED Process: 'ke->ke'",
|
||||
"QED Process: 'ke->kke'",
|
||||
"QED Process: 'ke->kkke'",
|
||||
"QED Process: 'ke->kkkke'",
|
||||
"QED Process: 'ke->kkkkke'",
|
||||
]
|
||||
|
||||
function proc_to_n(str::AbstractString)
|
||||
parts = split(str, "'")
|
||||
parts = split(parts[2], "->")
|
||||
k_count = count(c -> c == 'k', parts[2])
|
||||
return k_count
|
||||
end
|
||||
|
||||
function beautify_title(str::AbstractString)
|
||||
parts = split(str, "'")
|
||||
|
||||
preprefix = parts[1]
|
||||
infix = parts[2]
|
||||
sufsuffix = parts[3]
|
||||
|
||||
parts = split(infix, "->")
|
||||
|
||||
prefix = parts[1]
|
||||
suffix = parts[2]
|
||||
|
||||
k_count = count(c -> c == 'k', suffix)
|
||||
B_count = count(c -> c == 'B', suffix)
|
||||
|
||||
if k_count == 1 || B_count == 1
|
||||
new_suffix = suffix
|
||||
elseif k_count >= 1
|
||||
new_suffix = replace(suffix, r"k+" => "k^$k_count")
|
||||
elseif B_count >= 1
|
||||
new_suffix = replace(suffix, r"B+" => "B^$B_count")
|
||||
end
|
||||
|
||||
return "QED Compton Scattering Process " * L"%$prefix \rightarrow %$new_suffix" * sufsuffix
|
||||
end
|
||||
|
||||
input_file = ARGS[1]
|
||||
df = CSV.read(input_file, DataFrame)
|
||||
n_inputs = df[:, "n_inputs"][1]
|
||||
gpus = df.gpu_devices[1]
|
||||
cpus = df.cpu_threads[1]
|
||||
|
||||
power = Int(round(log2(n_inputs)))
|
||||
|
||||
chunk_sizes = ["1024", "4096", "16384", "65536", "262144", "1048576"]
|
||||
|
||||
best_times = Vector{Float64}()
|
||||
best_times_std = Vector{Float64}()
|
||||
|
||||
# plotting with threads as x axis
|
||||
for process_name in processes
|
||||
df_filt = filter(:process_name => x -> x == process_name, df)
|
||||
|
||||
df_filt.cpu_ratio = df_filt.cpu_chunks ./ (df_filt.cpu_chunks .+ df_filt.gpu_chunks) .* 100.0
|
||||
df_filt.gpu_ratio = df_filt.gpu_chunks ./ (df_filt.cpu_chunks .+ df_filt.gpu_chunks) .* 100.0
|
||||
|
||||
push!(best_times, minimum(df_filt.time))
|
||||
|
||||
bar(chunk_sizes, df_filt.cpu_ratio, label = "workload completed by \$$(cpus)\$ CPU threads (%)")
|
||||
bar!(
|
||||
chunk_sizes,
|
||||
[100, 100, 100, 100, 100, 100],
|
||||
label = "workload completed by $(gpus) GPUs (%)",
|
||||
fillto = df_filt.cpu_ratio,
|
||||
)
|
||||
|
||||
plot!(
|
||||
title = "$(beautify_title(process_name))\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
yscale = :linear,
|
||||
#xticks = [1024 4096 16384 65536 262144 1048576],
|
||||
ylim = (0, 105),
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "contribution (%)",
|
||||
xlabel = "chunk size (#)",
|
||||
)
|
||||
|
||||
savefig("full_node_chunk_size_$(process_name)_ratio.pdf")
|
||||
|
||||
|
||||
scatter(
|
||||
chunk_sizes,
|
||||
df_filt.rate,
|
||||
label = "total execution rate (\$s^{-1}\$)",
|
||||
title = "$(beautify_title(process_name))\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
yscale = :log10,
|
||||
#xticks = [1024 4096 16384 65536 262144 1048576],
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "rate (\$s^{-1}\$)",
|
||||
xlabel = "chunk size (#)",
|
||||
markersize = 7,
|
||||
)
|
||||
|
||||
savefig("full_node_chunk_size_$(process_name)_rate.pdf")
|
||||
|
||||
|
||||
scatter(
|
||||
chunk_sizes,
|
||||
df_filt.time,
|
||||
yerror = df_filt.std,
|
||||
label = "total execution time (s)",
|
||||
title = "$(beautify_title(process_name))\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
#xticks = [1024 4096 16384 65536 262144 1048576],
|
||||
ylim = (0, maximum(df_filt.time) * 1.05),
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "time (s)",
|
||||
xlabel = "chunk size (#)",
|
||||
markersize = 7,
|
||||
)
|
||||
|
||||
savefig("full_node_chunk_size_$(process_name)_time.pdf")
|
||||
|
||||
end
|
||||
|
||||
|
||||
# plotting with process size as x axis
|
||||
A100_rates = [2.530045276927587e9, 1.16972304616864e9, 2.0002725972692013e8, 3.495722925446318e7, 4.792187095617111e6]
|
||||
CPU_32threads_rates =
|
||||
[3.2691139045711152e7, 1.1578342663759507e7, 3.1670680975577887e6, 731037.7069429948, 115001.5594731802]
|
||||
|
||||
theory_rates = (A100_rates .+ CPU_32threads_rates) .* 4
|
||||
|
||||
scatter(
|
||||
proc_to_n.(processes),
|
||||
best_times,
|
||||
label = "full node best achieved time (s)",
|
||||
title = "QED N-Photon Compton Scattering\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
ylim = (0, maximum(best_times) * 1.05),
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "time (s)",
|
||||
xlabel = "process size (#)",
|
||||
markersize = 7,
|
||||
)
|
||||
|
||||
savefig("full_node_process_best_time.pdf")
|
||||
|
||||
|
||||
scatter(
|
||||
proc_to_n.(processes),
|
||||
(n_inputs ./ best_times),
|
||||
label = "full node best achieved rate (\$s^{-1}\$)",
|
||||
title = "QED N-Photon Compton Scattering\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
ylim = (0, maximum(n_inputs ./ best_times) * 1.05),
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "rate (\$s^{-1}\$)",
|
||||
xlabel = "process size (#)",
|
||||
markersize = 7,
|
||||
)
|
||||
|
||||
savefig("full_node_process_best_rate.pdf")
|
||||
|
||||
|
||||
|
||||
scatter(
|
||||
proc_to_n.(processes),
|
||||
[(n_inputs ./ best_times) theory_rates],
|
||||
label = ["full node best achieved rate (\$s^{-1}\$)" "theoretical rate from previous benchmarks (\$s^{-1}\$)"],
|
||||
title = "QED N-Photon Compton Scattering\nComputing $(n_inputs) (\$2^{$(power)}\$) Matrix Elements",
|
||||
#ylim = (0, max(maximum(n_inputs ./ best_times), maximum(theory_rates)) * 1.05),
|
||||
yscale = :log10,
|
||||
legend = :outerbottom,
|
||||
legendcolumns = 1,
|
||||
legend_font_pointsize = 10,
|
||||
size = (800, 600),
|
||||
ylabel = "rate (\$s^{-1}\$)",
|
||||
xlabel = "process size (#)",
|
||||
markersize = 7,
|
||||
)
|
||||
|
||||
savefig("full_node_process_best_rate_plus_theory.pdf")
|
||||
|
31
data/full_node_bench_hemera_32t_4a100_371467c.csv
Normal file
31
data/full_node_bench_hemera_32t_4a100_371467c.csv
Normal file
@ -0,0 +1,31 @@
|
||||
process_name,cpu_threads,gpu_devices,n_inputs,chunk_size,time,std,rate,cpu_chunks,gpu_chunks,memory_est
|
||||
QED Process: 'ke->ke',124,4,67108864,1024,3.498023189,0.3076721764605935,1.9184796776371513e7,45294.0,20242.0,1.447298688e10
|
||||
QED Process: 'ke->ke',124,4,67108864,4096,2.401494263,0.17013104933519752,2.7944628073425464e7,8872.5,7511.5,1.340607224e10
|
||||
QED Process: 'ke->ke',124,4,67108864,16384,2.040338948,0.11818602853354224,3.2891037082726903e7,1942.0,2154.0,1.2850894448e10
|
||||
QED Process: 'ke->ke',124,4,67108864,65536,1.9094240825,0.0703634619424293,3.514612841382763e7,431.0,593.0,1.2549270576e10
|
||||
QED Process: 'ke->ke',124,4,67108864,262144,1.663800835,0.09683669072918406,4.033467383131828e7,124.0,132.0,1.3304598192e10
|
||||
QED Process: 'ke->ke',124,4,67108864,1048576,4.363178006,0.15362201468327347,1.5380730263059545e7,60.0,4.0,1.635789408e10
|
||||
QED Process: 'ke->kke',124,4,67108864,1024,3.595792702,0.22982494201906578,1.8663162635230247e7,38403.0,27133.0,1.6004835648e10
|
||||
QED Process: 'ke->kke',124,4,67108864,4096,2.759823507,0.1517042378902089,2.431636074907887e7,7680.5,8703.5,1.521632832e10
|
||||
QED Process: 'ke->kke',124,4,67108864,16384,2.438895872,0.2675005760041791,2.7516084130712736e7,1666.0,2430.0,1.4017263776e10
|
||||
QED Process: 'ke->kke',124,4,67108864,65536,2.102141753,0.19062540340211018,3.19240431356391e7,372.0,652.0,1.4542648832e10
|
||||
QED Process: 'ke->kke',124,4,67108864,262144,1.963817117,0.270899103650203,3.417266476550423e7,124.0,132.0,1.5452095984e10
|
||||
QED Process: 'ke->kke',124,4,67108864,1048576,4.678252536,0.24347387468900175,1.4344857077206746e7,60.0,4.0,1.885768088e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,1024,3.922357603,0.5369159040482943,1.7109318117417965e7,25347.0,40189.0,1.672316376e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,4096,2.363901747,0.2856164398652175,2.8389024241454653e7,3829.0,12555.0,1.5615308512e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,16384,1.893031068,0.15072532448179204,3.545048210481879e7,744.0,3352.0,1.5101105104e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,65536,2.137146225,0.12041389223719733,3.140115693300303e7,248.0,776.0,1.5780112288e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,262144,2.776542017,0.01817299764175009,2.4169943616596095e7,124.0,132.0,1.7599575872e10
|
||||
QED Process: 'ke->kkke',124,4,67108864,1048576,9.735021382,0.14312958275274476,6.89355075522319e6,60.0,4.0,2.1005184928e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,1024,13.24530958,1.1412505488619353,5.066613475107616e6,24940.0,40596.0,1.8619863968e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,4096,6.654388343,2.053901855132858,1.0084903456317563e7,3588.5,12795.5,1.7528517888e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,16384,4.255322572,0.4138751997857821,1.5770570353837797e7,496.0,3600.0,1.7020825088e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,65536,3.756418218,2.7132996417968327,1.78651204699274e7,124.0,900.0,1.701754576e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,262144,12.8016601195,0.06866851952937757,5.24220010323326e6,124.0,132.0,1.974705816e10
|
||||
QED Process: 'ke->kkkke',124,4,67108864,1048576,45.664600753,0.4542000947311946,1.4696036512613369e6,62.0,2.0,2.3504986032e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,1024,56.517159165,NaN,1.1874068865364918e6,24819.0,40717.0,2.1017071136e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,4096,30.239194471,8.720258576297342,2.2192675821559583e6,2980.0,13404.0,1.940682472e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,16384,12.192125241,2.800688574554207,5.5042794158908855e6,275.0,3821.0,1.8713809728e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,65536,19.262260871,0.18994391422350254,3.483955723029103e6,124.0,900.0,1.9165067936e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,262144,74.888312523,NaN,896119.3240853072,124.0,132.0,2.1894531872e10
|
||||
QED Process: 'ke->kkkkke',124,4,67108864,1048576,269.327736071,NaN,249171.7525235084,61.5,2.5,2.5652469296e10
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
images/full_node/full_node_process_best_rate.pdf
Normal file
BIN
images/full_node/full_node_process_best_rate.pdf
Normal file
Binary file not shown.
BIN
images/full_node/full_node_process_best_rate_plus_theory.pdf
Normal file
BIN
images/full_node/full_node_process_best_rate_plus_theory.pdf
Normal file
Binary file not shown.
BIN
images/full_node/full_node_process_best_time.pdf
Normal file
BIN
images/full_node/full_node_process_best_time.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user