From 8bbbc72bfc023cf856b51d7bec6b3f7efbd897a3 Mon Sep 17 00:00:00 2001 From: Anton Reinhard Date: Tue, 13 Feb 2024 23:38:55 +0100 Subject: [PATCH] Evaluate memory footprints of hemera, generate process numbers in notebook --- data/evaluate_gen.jl | 61 ++++++++++++++++++++++---- images/gen_memory.pdf | Bin 0 -> 17895 bytes images/gen_times_1_threads_hemera.pdf | Bin 17709 -> 19102 bytes notebooks/num_diagrams.ipynb | 38 ++++++++++++++++ 4 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 images/gen_memory.pdf diff --git a/data/evaluate_gen.jl b/data/evaluate_gen.jl index 186a179..c37177f 100644 --- a/data/evaluate_gen.jl +++ b/data/evaluate_gen.jl @@ -18,23 +18,32 @@ input_file = ARGS[1] df = CSV.read(input_file, DataFrame) # plotting with process size as x axis -THREADS = [] +THREADS = [1] for threads in THREADS - title_string = "n-photon Compton diagram generation, $threads threads" + title_string = "n-photon Compton diagram generation" df_filt = filter(:cpu_threads => x -> x == threads, df) df_filt = filter(:process_name => x -> proc_to_n(x) >= 1, df_filt) + + # ns -> s df_filt.graph_gen_mean = @. df_filt.graph_gen_mean / 1e9 df_filt.graph_gen_std = @. df_filt.graph_gen_std / 1e9 - df_filt.process_size = @. proc_to_n(df_filt.process_name) + # B -> MB (not MiB since the log scale is base 10) + df_filt.graph_mem = @. df_filt.graph_mem / 1e6 + df_filt.graph_mem_reduced = @. df_filt.graph_mem_reduced / 1e6 - @df df_filt scatter( - :process_size, - :graph_gen_mean, - yerror = :graph_gen_std, - label = "graph generation time", + df_filt.process_size = @. proc_to_n(df_filt.process_name) + l = length(df_filt.process_size) + + + @df df_filt scatter(:process_size, :graph_mem, label = "unreduced graph", markersize = 7) + scatter!( + df_filt[!, :process_size][1:(l - 1)], + df_filt[!, :graph_mem_reduced][1:(l - 1)], + label = "reduced graph", + markershape = :square, markersize = 7, ) @@ -44,7 +53,41 @@ for threads in THREADS legend = :outerbottom, minorgrid = true, xticks = :process_size, - yticks = [1e-3, 1e-2, 1e-1, 1e-0, 1e1], + #yticks = [1e-3, 1e-1, 1e1, 1e3], + xgrid = false, + xminorticks = false, + legendcolumns = 1, + legend_font_pointsize = 10, + size = (800, 600), + ylabel = "memory footprint (MB)", + xlabel = "process size (#)", + ) + + savefig("gen_memory_$(threads).pdf") + exit(0) + + @df df_filt scatter( + :process_size, + :graph_gen_mean, + yerror = :graph_gen_std, + label = "graph generation time", + markersize = 7, + ) + scatter!( + df_filt[!, :process_size][1:(l - 1)], + df_filt[!, :graph_elapsed_reduce][1:(l - 1)], + label = "graph reduction time", + markershape = :square, + markersize = 7, + ) + + plot!( + title = title_string, + yscale = :log10, + legend = :outerbottom, + minorgrid = true, + xticks = :process_size, + yticks = [1e-3, 1e-1, 1e1, 1e3], xgrid = false, xminorticks = false, legendcolumns = 1, diff --git a/images/gen_memory.pdf b/images/gen_memory.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d182f3c090f2078e4403f0b66d75686b8c5ac9a4 GIT binary patch literal 17895 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 literal 0 HcmV?d00001 diff --git a/images/gen_times_1_threads_hemera.pdf b/images/gen_times_1_threads_hemera.pdf index 327f6d1f198a48df7b3b8171225692c2e738b7cd..627c2ef7e1556479bd821fa0fd296cc545abbeb4 100644 GIT binary patch delta 18347 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

K@#WR;Y28c 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 VH5QYfN%RXhG&eE|B_%~qMhcdEzR>^x diff --git a/notebooks/num_diagrams.ipynb b/notebooks/num_diagrams.ipynb index 5d60f43..e70ceda 100644 --- a/notebooks/num_diagrams.ipynb +++ b/notebooks/num_diagrams.ipynb @@ -95,6 +95,44 @@ "println([num_diagrams(0, n) for n in 2:7])\n", "println([num_diagrams_small_form(0, n) for n in 2:7])" ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\rowcolor[HTML]{9B9B9B}1 && 1 & 0 & 0 & 1 & 1 & 2 & 6 & 24 & 120 \\\\ \\hline\n", + "\\rowcolor[HTML]{C0C0C0}2 && 1 & 1 & 0 & 1 & 4 & 20 & 120 & 840 & 6720 \\\\ \\hline\n", + "\\rowcolor[HTML]{9B9B9B}2 && 2 & 0 & 0 & 2 & 8 & 40 & 240 & 1680 & 13440 \\\\ \\hline\n", + "\\rowcolor[HTML]{C0C0C0}3 && 1 & 1 & 1 & 6 & 42 & 336 & 3024 & 30240 & 332640 \\\\ \\hline\n", + "\\rowcolor[HTML]{9B9B9B}3 && 2 & 1 & 0 & 12 & 84 & 672 & 6048 & 60480 & 665280 \\\\ \\hline\n", + "\\rowcolor[HTML]{C0C0C0}3 && 3 & 0 & 0 & 36 & 252 & 2016 & 18144 & 181440 & 1995840 \\\\ \\hline\n", + "\\rowcolor[HTML]{9B9B9B}4 && 2 & 1 & 1 & 144 & 1440 & 15840 & 190080 & 2471040 & 34594560 \\\\ \\hline\n", + "\\rowcolor[HTML]{C0C0C0}4 && 2 & 2 & 0 & 288 & 2880 & 31680 & 380160 & 4942080 & 69189120 \\\\ \\hline\n", + "\\rowcolor[HTML]{9B9B9B}4 && 3 & 1 & 0 & 432 & 4320 & 47520 & 570240 & 7413120 & 103783680 \\\\ \\hline\n", + "\\rowcolor[HTML]{C0C0C0}4 && 4 & 0 & 0 & 1728 & 17280 & 190080 & 2280960 & 29652480 & 415134720 \\\\ \\hline\n" + ] + } + ], + "source": [ + "# tables\n", + "i = 0\n", + "nums = [[1, 0, 0], [1, 1, 0], [2, 0, 0], [1, 1, 1], [2, 1, 0], [3, 0, 0], [2, 1, 1], [2, 2, 0], [3, 1, 0], [4, 0, 0]]\n", + "for (e, u, t) in nums\n", + " i += 1\n", + " if (u + t + e == 0) continue end\n", + " if (i % 2 == 0) \n", + " print(\"\\\\rowcolor[HTML]{C0C0C0}\")\n", + " else\n", + " print(\"\\\\rowcolor[HTML]{9B9B9B}\")\n", + " end\n", + " println(\"$(e + u + t) && $e & $u & $t & $(num_diagrams(0, e, u, t)) & $(num_diagrams(1, e, u, t)) & $(num_diagrams(2, e, u, t)) & $(num_diagrams(3, e, u, t)) & $(num_diagrams(4, e, u, t)) & $(num_diagrams(5, e, u, t)) \\\\\\\\ \\\\hline\")\n", + "end" + ] } ], "metadata": {