diff --git a/Data/header.txt b/Data/header.txt index ea66a42..69154f9 100644 --- a/Data/header.txt +++ b/Data/header.txt @@ -1 +1 @@ -load,exploit,appl,nodes,runtime,task0,task1,task3,task4,task5 +load,exploit,appl,nodes,runtime,task0,task1,task2,task3,task4,task5 diff --git a/Data/para_data.csv b/Data/para_data.csv index 66356b3..bc669fe 100644 --- a/Data/para_data.csv +++ b/Data/para_data.csv @@ -825,3 +825,16 @@ 296,192,75,7,23490.471000,0,6303.6,4233.38,462.256,193.123,0 296,192,75,11,10048.356000,0,3927.12,2566.14,448.038,187.57,0 296,192,75,12,6367.721000,0,2259.08,2165.39,379.227,184.58,0 +296,192,100,4,27985.090000,0,7315.56,5648.59,400.992,201.941,0 +296,192,100,5,28102.298000,0,7283.72,5656.43,463.276,198.647,0 +296,192,100,6,30251.226000,0,7450.48,6465.63,477.498,250.285,0 +296,192,100,7,31718.292000,0,8636.27,5732.31,393.129,299.022,0 +296,192,100,10,10155.169000,0,3491.69,3354.44,454.262,205.671,0 +296,192,100,11,11954.256000,0,4611.84,3241.29,429.406,207.792,0 +296,192,100,12,7929.457000,0,2934.86,2693.78,382.558,221.012,0 +296,384,0,4,8951.850000,0,3522.83,20.054,380.025,251.68,0 +296,384,0,5,9022.542000,0,3560.87,20.1415,380.215,191.771,0 +296,384,0,6,9659.159000,0,3662.09,20.336,446.857,186.781,0 +296,384,0,7,5730.417000,0,2475.98,20.2225,371.225,212.417,0 +296,384,0,9,4908.263000,0,2097.58,288.186,380.105,240.339,0 +296,384,0,10,4901.544000,0,1814.81,476,438.053,247.114,0 diff --git a/Data/timing.csv b/Data/timing.csv index b542571..f660d6c 100644 --- a/Data/timing.csv +++ b/Data/timing.csv @@ -1,4 +1,4 @@ -load,exploit,appl,nodes,runtime,task0,task1,task3,task4,task5 +load,exploit,appl,nodes,runtime,task0,task1,task2,task3,task4,task5 395,6,0,2,1772.319000,0,203.185,272.299,311.078,0,0 395,6,0,3,1871.757000,0,203.071,20.159,253.848,0,0 395,6,0,4,1953.241000,0,215.554,21.14,262.591,0,0 @@ -826,6 +826,19 @@ load,exploit,appl,nodes,runtime,task0,task1,task3,task4,task5 296,192,75,7,23490.471000,0,6303.6,4233.38,462.256,193.123,0 296,192,75,11,10048.356000,0,3927.12,2566.14,448.038,187.57,0 296,192,75,12,6367.721000,0,2259.08,2165.39,379.227,184.58,0 +296,192,100,4,27985.090000,0,7315.56,5648.59,400.992,201.941,0 +296,192,100,5,28102.298000,0,7283.72,5656.43,463.276,198.647,0 +296,192,100,6,30251.226000,0,7450.48,6465.63,477.498,250.285,0 +296,192,100,7,31718.292000,0,8636.27,5732.31,393.129,299.022,0 +296,192,100,10,10155.169000,0,3491.69,3354.44,454.262,205.671,0 +296,192,100,11,11954.256000,0,4611.84,3241.29,429.406,207.792,0 +296,192,100,12,7929.457000,0,2934.86,2693.78,382.558,221.012,0 +296,384,0,4,8951.850000,0,3522.83,20.054,380.025,251.68,0 +296,384,0,5,9022.542000,0,3560.87,20.1415,380.215,191.771,0 +296,384,0,6,9659.159000,0,3662.09,20.336,446.857,186.781,0 +296,384,0,7,5730.417000,0,2475.98,20.2225,371.225,212.417,0 +296,384,0,9,4908.263000,0,2097.58,288.186,380.105,240.339,0 +296,384,0,10,4901.544000,0,1814.81,476,438.053,247.114,0 395,6,0,1,549.759000,0,198.494,179.04,44.75,0,5.646 395,6,25,1,539.196000,0,192.308,174.378,44.006,0,5.7 395,6,50,1,545.386000,0,194.225,175.032,44.278,0,5.927 diff --git a/Schrick-Noah_MPI-Tasking.aux b/Schrick-Noah_MPI-Tasking.aux index 483179a..c5e3610 100644 --- a/Schrick-Noah_MPI-Tasking.aux +++ b/Schrick-Noah_MPI-Tasking.aux @@ -101,16 +101,27 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{7}{subsection.6.4}\protected@file@percent } \newlabel{sec:test-platform}{{\mbox {VI-D}}{7}{Testing Platform}{subsection.6.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Testing Process}{7}{subsection.6.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VII}Analysis and Results}{8}{section.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}Exploratory Data Analysis}{8}{subsection.7.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Parallel Coordinates Plot of MPI Tasking Parameters and Runtime(ms)}}{8}{figure.9}\protected@file@percent } +\newlabel{fig:para_coords}{{9}{8}{Parallel Coordinates Plot of MPI Tasking Parameters and Runtime(ms)}{figure.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Nonlinear Regression}{8}{subsection.7.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Results}{8}{section.8}\protected@file@percent } +\newlabel{sec:Tasking-Results}{{VIII}{8}{Results}{section.8}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Number of Nodes and Exploits (Averaged) vs. Runtime (ms)}}{8}{figure.10}\protected@file@percent } +\newlabel{fig:nodes-exp}{{10}{8}{Number of Nodes and Exploits (Averaged) vs. Runtime (ms)}{figure.10}{}} \bibdata{Bibliography} \bibcite{9678822}{1} -\@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{8}{section.7}\protected@file@percent } -\newlabel{sec:Tasking-Results}{{VII}{8}{Results}{section.7}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{8}{figure.9}\protected@file@percent } -\newlabel{fig:Spd-Eff-Task}{{9}{8}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.9}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces MPI Tasking Approach Runtime Results}}{8}{figure.10}\protected@file@percent } -\newlabel{fig:Tasking-RT}{{10}{8}{MPI Tasking Approach Runtime Results}{figure.10}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{8}{figure.11}\protected@file@percent } -\newlabel{fig:Tasking-Spd}{{11}{8}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.11}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Applicability of Exploits (\%) and Database Load (\%) (Averaged) vs. Runtime (ms)}}{9}{figure.11}\protected@file@percent } +\newlabel{fig:appl-load}{{11}{9}{Applicability of Exploits (\%) and Database Load (\%) (Averaged) vs. Runtime (ms)}{figure.11}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{9}{figure.12}\protected@file@percent } +\newlabel{fig:Spd-Eff-Task}{{12}{9}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.12}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces MPI Tasking Approach Runtime Results}}{9}{figure.13}\protected@file@percent } +\newlabel{fig:Tasking-RT}{{13}{9}{MPI Tasking Approach Runtime Results}{figure.13}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{9}{figure.14}\protected@file@percent } +\newlabel{fig:Tasking-Spd}{{14}{9}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.14}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{9}{figure.15}\protected@file@percent } +\newlabel{fig:Tasking-Eff}{{15}{9}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.15}{}} \bibcite{7993827}{2} \bibcite{8652334}{3} \bibcite{baloyi_guidelines_2019}{4} @@ -138,10 +149,7 @@ \bibcite{li_combining_2019}{26} \bibcite{Slurm}{27} \bibstyle{ieeetr} -\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{9}{figure.12}\protected@file@percent } -\newlabel{fig:Tasking-Eff}{{12}{9}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.12}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{9}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion and Future Work}{9}{section.9}\protected@file@percent } -\newlabel{sec:FW}{{IX}{9}{Conclusion and Future Work}{section.9}{}} -\@writefile{toc}{\contentsline {section}{References}{9}{section*.1}\protected@file@percent } -\gdef \@abspage@last{9} +\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion and Future Work}{10}{section.9}\protected@file@percent } +\newlabel{sec:FW}{{IX}{10}{Conclusion and Future Work}{section.9}{}} +\@writefile{toc}{\contentsline {section}{References}{10}{section*.1}\protected@file@percent } +\gdef \@abspage@last{10} diff --git a/Schrick-Noah_MPI-Tasking.log b/Schrick-Noah_MPI-Tasking.log index 95944e1..b4e7481 100644 --- a/Schrick-Noah_MPI-Tasking.log +++ b/Schrick-Noah_MPI-Tasking.log @@ -1,8 +1,8 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 6 APR 2023 16:33 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 18 APR 2023 16:06 entering extended mode restricted \write18 enabled. %&-line parsing enabled. -**Schrick-Noah_MPI-Tasking +**Schrick-Noah_MPI-Tasking.tex (./Schrick-Noah_MPI-Tasking.tex LaTeX2e <2022-11-01> patch level 1 L3 programming layer <2023-02-22> @@ -502,7 +502,7 @@ Underfull \hbox (badness 2119) in paragraph at lines 55--56 [] -Underfull \hbox (badness 2293) in paragraph at lines 60--61 +Underfull \hbox (badness 2293) in paragraph at lines 59--60 \OT1/ptm/m/n/10 process to parallelize and deploy on High-Performance [] @@ -511,137 +511,168 @@ ts/enc/dvips/base/8r.enc} ] -LaTeX Font Info: Trying to load font information for U+msa on input line 73. +LaTeX Font Info: Trying to load font information for U+msa on input line 72. (/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 73. +LaTeX Font Info: Trying to load font information for U+msb on input line 72. (/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) -Underfull \hbox (badness 1584) in paragraph at lines 73--76 +Underfull \hbox (badness 1584) in paragraph at lines 72--75 \OT1/ptm/m/n/10 improvement specific to attack graphs. As a means of [] -Underfull \hbox (badness 4378) in paragraph at lines 77--80 +Underfull \hbox (badness 4378) in paragraph at lines 76--79 \OT1/ptm/m/n/10 parallelization. The authors of [[][]23[][]] leverage OpenMP [] -Underfull \hbox (badness 3260) in paragraph at lines 77--80 +Underfull \hbox (badness 3260) in paragraph at lines 76--79 \OT1/ptm/m/n/10 to parallelize the exploration of a FIFO queue. This [] [2] -<./images/horiz_task.drawio.png, id=181, 1181.41376pt x 785.93625pt> +<./images/horiz_task.drawio.png, id=190, 1181.41376pt x 785.93625pt> File: ./images/horiz_task.drawio.png Graphic file (type png) -Package pdftex.def Info: ./images/horiz_task.drawio.png used on input line 116 +Package pdftex.def Info: ./images/horiz_task.drawio.png used on input line 115 . (pdftex.def) Requested size: 252.0pt x 167.64183pt. -<./images/node-alloc.png, id=184, 818.30719pt x 536.75531pt> +<./images/node-alloc.png, id=193, 818.30719pt x 536.75531pt> File: ./images/node-alloc.png Graphic file (type png) -Package pdftex.def Info: ./images/node-alloc.png used on input line 128. +Package pdftex.def Info: ./images/node-alloc.png used on input line 127. (pdftex.def) Requested size: 252.0pt x 165.29492pt. [3 <./images/horiz_task.drawio.png> <./images/node-alloc.PNG>] -<./images/Task1-Data-Dist.png, id=196, 597.98407pt x 197.48781pt> +<./images/Task1-Data-Dist.png, id=204, 597.98407pt x 197.48781pt> File: ./images/Task1-Data-Dist.png Graphic file (type png) -Package pdftex.def Info: ./images/Task1-Data-Dist.png used on input line 145. +Package pdftex.def Info: ./images/Task1-Data-Dist.png used on input line 144. (pdftex.def) Requested size: 252.0pt x 83.22455pt. -<./images/Task1-Case1.png, id=200, 586.44093pt x 339.51843pt> +<./images/Task1-Case1.png, id=208, 586.44093pt x 339.51843pt> File: ./images/Task1-Case1.png Graphic file (type png) -Package pdftex.def Info: ./images/Task1-Case1.png used on input line 154. +Package pdftex.def Info: ./images/Task1-Case1.png used on input line 153. (pdftex.def) Requested size: 252.0pt x 145.89163pt. -<./images/Task1-Case2.png, id=201, 702.37407pt x 414.79968pt> +<./images/Task1-Case2.png, id=209, 702.37407pt x 414.79968pt> File: ./images/Task1-Case2.png Graphic file (type png) -Package pdftex.def Info: ./images/Task1-Case2.png used on input line 161. +Package pdftex.def Info: ./images/Task1-Case2.png used on input line 160. (pdftex.def) Requested size: 252.0pt x 148.82143pt. -<./images/Sync-Fire.png, id=203, 489.83pt x 1053.9375pt> +<./images/Sync-Fire.png, id=211, 489.83pt x 1053.9375pt> File: ./images/Sync-Fire.png Graphic file (type png) -Package pdftex.def Info: ./images/Sync-Fire.png used on input line 171. +Package pdftex.def Info: ./images/Sync-Fire.png used on input line 170. (pdftex.def) Requested size: 252.0pt x 542.21298pt. [4 <./images/Task1-Data-Dist.PNG> <./images/Task1-Case1.PNG> <./images/Task1-C ase2.PNG>] LaTeX Warning: No positions in optional float specifier. - Default added (so using `tbp') on input line 186. + Default added (so using `tbp') on input line 185. [5 <./images/Sync-Fire.png>] -Underfull \hbox (badness 1389) in paragraph at lines 217--218 +Underfull \hbox (badness 1389) in paragraph at lines 216--217 \OT1/ptm/m/n/10 the performance of each task. Generating larger graphs [] LaTeX Warning: No positions in optional float specifier. - Default added (so using `tbp') on input line 219. + Default added (so using `tbp') on input line 218. -<./images/NA.png, id=227, 369.38pt x 118.4425pt> +<./images/NA.png, id=235, 369.38pt x 118.4425pt> File: ./images/NA.png Graphic file (type png) -Package pdftex.def Info: ./images/NA.png used on input line 243. +Package pdftex.def Info: ./images/NA.png used on input line 242. (pdftex.def) Requested size: 184.68954pt x 59.2211pt. [6 <./images/NA.png>] -<./images/Applicable_E.png, id=238, 360.34625pt x 104.39pt> +<./images/Applicable_E.png, id=246, 360.34625pt x 104.39pt> File: ./images/Applicable_E.png Graphic file (type png) -Package pdftex.def Info: ./images/Applicable_E.png used on input line 267. +Package pdftex.def Info: ./images/Applicable_E.png used on input line 266. (pdftex.def) Requested size: 180.17268pt x 52.19485pt. -Underfull \hbox (badness 2057) in paragraph at lines 280--282 +Underfull \hbox (badness 2057) in paragraph at lines 279--281 []\OT1/ptm/m/n/10 The database load parameter was changed based on [] -Underfull \hbox (badness 7451) in paragraph at lines 300--301 +Underfull \hbox (badness 7451) in paragraph at lines 299--300 \OT1/ptm/m/n/10 All nodes are connected with a 10Gbps Infiniband [] [7 <./images/Applicable_E.png>] -Underfull \hbox (badness 3713) in paragraph at lines 310--311 +<./images/para_coords.png, id=262, 1468.48625pt x 451.6875pt> +File: ./images/para_coords.png Graphic file (type png) + +Package pdftex.def Info: ./images/para_coords.png used on input line 310. +(pdftex.def) Requested size: 252.0pt x 77.50954pt. +<./images/nodes-runtime.png, id=263, 431.4519pt x 330.9966pt> +File: ./images/nodes-runtime.png Graphic file (type png) + +Package pdftex.def Info: ./images/nodes-runtime.png used on input line 318. +(pdftex.def) Requested size: 252.0pt x 193.33171pt. +<./images/exploits-runtime.png, id=264, 409.7709pt x 350.5095pt> +File: ./images/exploits-runtime.png Graphic file (type png) + +Package pdftex.def Info: ./images/exploits-runtime.png used on input line 319. + +(pdftex.def) Requested size: 252.0pt x 215.55405pt. +<./images/applicability-runtime.png, id=265, 431.4519pt x 337.5009pt> +File: ./images/applicability-runtime.png Graphic file (type png) + +Package pdftex.def Info: ./images/applicability-runtime.png used on input line + 326. +(pdftex.def) Requested size: 252.0pt x 197.13081pt. +<./images/dbload-runtime.png, id=266, 431.4519pt x 337.5009pt> +File: ./images/dbload-runtime.png Graphic file (type png) + +Package pdftex.def Info: ./images/dbload-runtime.png used on input line 327. +(pdftex.def) Requested size: 252.0pt x 197.13081pt. + +Underfull \hbox (badness 3713) in paragraph at lines 339--340 []\OT1/ptm/m/n/10 In terms of efficiency, 2 compute nodes offer the [] -<./images/Speedup-Esize-Tasking.png, id=260, 620.208pt x 321.93pt> +[8 <./images/para_coords.png> <./images/nodes-runtime.png> <./images/exploits-r +untime.png>] +<./images/Speedup-Esize-Tasking.png, id=288, 620.208pt x 321.93pt> File: ./images/Speedup-Esize-Tasking.png Graphic file (type png) Package pdftex.def Info: ./images/Speedup-Esize-Tasking.png used on input line - 318. + 347. (pdftex.def) Requested size: 252.0pt x 130.80338pt. -<./images/Eff-Esize-Tasking.png, id=261, 620.208pt x 322.149pt> +<./images/Eff-Esize-Tasking.png, id=289, 620.208pt x 322.149pt> File: ./images/Eff-Esize-Tasking.png Graphic file (type png) -Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 319 +Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 348 . (pdftex.def) Requested size: 252.0pt x 130.89236pt. -<./images/Tasking_RT.png, id=262, 860.46469pt x 257.96375pt> +<./images/Tasking_RT.png, id=290, 860.46469pt x 257.96375pt> File: ./images/Tasking_RT.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_RT.png used on input line 326. +Package pdftex.def Info: ./images/Tasking_RT.png used on input line 355. (pdftex.def) Requested size: 252.0pt x 75.54756pt. -<./images/Tasking_Spd.png, id=263, 860.46469pt x 276.53313pt> +<./images/Tasking_Spd.png, id=291, 860.46469pt x 276.53313pt> File: ./images/Tasking_Spd.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 333. +Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 362. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -<./images/Tasking_Eff.png, id=264, 860.46469pt x 276.53313pt> +<./images/Tasking_Eff.png, id=292, 860.46469pt x 276.53313pt> File: ./images/Tasking_Eff.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 340. +Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 369. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -(./Schrick-Noah_MPI-Tasking.bbl -Underfull \vbox (badness 10000) has occurred while \output is active [] + (./Schrick-Noah_MPI-Tasking.bbl +Underfull \vbox (badness 3815) has occurred while \output is active [] - [8 <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize-Tasking.png> <./im -ages/Tasking_RT.png> <./images/Tasking_Spd.png>] + [9 <./images/applicability-runtime.png> <./images/dbload-runtime.png> <./image +s/Speedup-Esize-Tasking.png> <./images/Eff-Esize-Tasking.png> <./images/Tasking +_RT.png> <./images/Tasking_Spd.png> <./images/Tasking_Eff.png>] Underfull \hbox (badness 1442) in paragraph at lines 21--26 \OT1/ptm/m/n/8 A Focus on Cyberphysical Systems and Internet of Things,'' in [] @@ -684,19 +715,22 @@ Before submitting the final camera ready copy, remember to: uses only Type 1 fonts and that every step in the generation process uses the appropriate paper size. -[9 <./images/Tasking_Eff.png>] (./Schrick-Noah_MPI-Tasking.aux) +[10] (./Schrick-Noah_MPI-Tasking.aux) + +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. + Package rerunfilecheck Info: File `Schrick-Noah_MPI-Tasking.out' has not change d. -(rerunfilecheck) Checksum: 282EFB5F213C3BBCE81796BF27E429B0;3411. +(rerunfilecheck) Checksum: F261765C4242D52E5D05144E1219080C;3827. ) Here is how much of TeX's memory you used: - 12254 strings out of 476025 - 194956 string characters out of 5796533 + 12305 strings out of 476025 + 196397 string characters out of 5796533 1871388 words of memory out of 5000000 - 32452 multiletter control sequences out of 15000+600000 + 32492 multiletter control sequences out of 15000+600000 550927 words of font info for 105 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 75i,14n,76p,2022b,592s stack positions out of 5000i,500n,10000p,200000b,80000s + 75i,14n,76p,2026b,600s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on Schrick-Noah_MPI-Tasking.pdf (9 pages, 1046533 bytes). +Output written on Schrick-Noah_MPI-Tasking.pdf (10 pages, 1313338 bytes). PDF statistics: - 340 PDF objects out of 1000 (max. 8388607) - 286 compressed objects within 3 object streams - 76 named destinations out of 1000 (max. 500000) - 266 words of extra memory for PDF output out of 10000 (max. 10000000) + 370 PDF objects out of 1000 (max. 8388607) + 304 compressed objects within 4 object streams + 82 named destinations out of 1000 (max. 500000) + 307 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MPI-Tasking.out b/Schrick-Noah_MPI-Tasking.out index 2d66a99..b9f909e 100644 --- a/Schrick-Noah_MPI-Tasking.out +++ b/Schrick-Noah_MPI-Tasking.out @@ -19,7 +19,9 @@ \BOOKMARK [2][-]{subsection.6.3}{\376\377\000D\000a\000t\000a\000b\000a\000s\000e\000\040\000L\000o\000a\000d}{section.6}% 19 \BOOKMARK [2][-]{subsection.6.4}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000P\000l\000a\000t\000f\000o\000r\000m}{section.6}% 20 \BOOKMARK [2][-]{subsection.6.5}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000P\000r\000o\000c\000e\000s\000s}{section.6}% 21 -\BOOKMARK [1][-]{section.7}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 22 -\BOOKMARK [1][-]{section.8}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 23 -\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 24 -\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 25 +\BOOKMARK [1][-]{section.7}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s\000\040\000a\000n\000d\000\040\000R\000e\000s\000u\000l\000t\000s}{}% 22 +\BOOKMARK [2][-]{subsection.7.1}{\376\377\000E\000x\000p\000l\000o\000r\000a\000t\000o\000r\000y\000\040\000D\000a\000t\000a\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.7}% 23 +\BOOKMARK [2][-]{subsection.7.2}{\376\377\000N\000o\000n\000l\000i\000n\000e\000a\000r\000\040\000R\000e\000g\000r\000e\000s\000s\000i\000o\000n}{section.7}% 24 +\BOOKMARK [1][-]{section.8}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 25 +\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 26 +\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 27 diff --git a/Schrick-Noah_MPI-Tasking.pdf b/Schrick-Noah_MPI-Tasking.pdf index 95f4317..449450f 100644 Binary files a/Schrick-Noah_MPI-Tasking.pdf and b/Schrick-Noah_MPI-Tasking.pdf differ diff --git a/Schrick-Noah_MPI-Tasking.tex b/Schrick-Noah_MPI-Tasking.tex index 4bed58a..fb459c2 100644 --- a/Schrick-Noah_MPI-Tasking.tex +++ b/Schrick-Noah_MPI-Tasking.tex @@ -54,8 +54,7 @@ Attack Graph; Compliance Graph; MPI; High-Performance Computing; Cybersecurity; \section{Introduction} \label{sec:Intro} As the size of computer networks continues to grow, cybersecurity analysts are tasked to mitigate risk with increasing difficulty. The authors of \cite{9678822}, \cite{7993827}, and \cite{8652334} discuss how the rapidly expanding network sizes bring about drastic changes along with the requirement to shift and refocus to accommodate the expansion. This includes presenting novel architectures to support the ever-growing IPTV networks, examinations of computer viruses through epidemiology modeling, and evaluations of new routing schemes. In recent years, a greater usage of cyber-physical systems and a growing adoption of the Internet of Things (IoT) also contributes to an increased need for risk mitigation across varying types of networks, as discussed by the authors of \cite{baloyi_guidelines_2019}, \cite{allman_complying_2006}, and \cite{j_hale_compliance_nodate}. One approach for analyzing the large number of hosts and growing lists of exploits is to automate the generation of attack or compliance graphs for later use. Attack and compliance graphs are directed acyclic graphs (DAGs) that typically represent one or many systems as nodes in a graph, and any changes that could be made to them as edges. The automation of these graphs has been used and presented by authors such as \cite{ou_scalable_2006}, \cite{CPSIOT}, and \cite{ming_jo}. The graph generators will take system information and exploits to check for as input, and will exhaustively draw all possible ways that the systems may be at risk of a cybersecurity attack or at risk of violating a compliance regulation or mandate. If a system is able to be modified through a setting change (regardless of intent), have its compliance standing altered, or have a policy updated, an edge is drawn from that node to a new node with the changed system properties. This process is repeated until all possible alterations are identified and represented in the resulting attack or compliance graph. -Difficulties -Due to the expansion in network size, and with the inclusion of IoT and cyber-physical devices, the generation of attack and compliance graph quickly becomes difficult with the large number of assets needed to be processed. In addition, the number of regulatory and compliance checks, the large number of exploit and vulnerability entries available, and any custom internal standard checks or zero-day scripting causes a state space explosion in the graph generation process. As a result, these graphs become infeasible to generate and process serially. +Due to the expansion in network size, and with the inclusion of IoT and cyber-physical devices, the generation of attack and compliance graph quickly becomes difficult with the large number of assets needed to be processed. In addition, the number of regulatory and compliance checks, the large number of exploit and vulnerability entries available, and any custom internal standard checks or zero-day scripting causes a state space explosion in the graph generation process. As a result, real-world graphs become infeasible to generate and process serially. The attack and compliance graph generation is a viable process to parallelize and deploy on High-Performance Computing (HPC) environments, and related parallel and speedup works are discussed in Section \ref{sec:rel_works}. This work presents an extension to RAGE (RAGE Attack Graph Engine \cite{cook_rage_2018}) to function on distributed computing environments to take advantage of the increased computing power using message-passing. As mentioned by the author of \cite{pacheco_introduction_2011}, MPI is a widely used message-passing API, and one goal of this work was to utilize an API that was not only familiar and accessible, but versatile and powerful for parallelizing RAGE for distributed computing platforms. This work discusses a task parallelism approach for the generation process, and uses OpenMPI for the MPI implementation. @@ -302,6 +301,55 @@ All nodes are connected with a 10Gbps Infiniband interconnect. \subsection{Testing Process} Each parameter discussed in this section was individually changed until all permutations of parameters were explored. In addition to changing the parameters, all tests were conducted on a varying number of nodes. All permutations of parameters were examined on 1 compute node (serially) through 12 compute nodes. A bash script for looping through parameters was created on the distributed computing testing platform, with jobs sent to Slurm Workload Manager \cite{Slurm}. When a job is completed with Slurm, the bash script would use grep on the output file to extract the necessary data, and add it to a CSV file that was used for the data analysis. +\section{Analysis and Results} +Exploratory data analysis was performed on the resulting data using Python to ascertain data relationships. Due to the multivariate nature of the data, there is difficulty visualizing all four independent variables (parameters) and the outcome (runtime) simultaneously. Figure \ref{fig:para_coords} makes uses of Plotly's parallel coordinates to visualize the parameters and their relationship to the runtime. Using pivot tables, Figures \ref{fig:nodes-exp} and \ref{fig:appl-load} show the runtime as they relate to the average of each individual parameter. These figures display the expected outcome: as the number of nodes increase, the runtime decreases, and as the number of exploits, applicability of exploits, and database load increases, the runtime likewise increases. + +\begin{figure}[htp] + \centering + \includegraphics[width=\linewidth]{"./images/para_coords.png"} + \vspace{.2truein} \centerline{} + \caption{Parallel Coordinates Plot of MPI Tasking Parameters and Runtime(ms)} + \label{fig:para_coords} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{"./images/nodes-runtime.png"} + \includegraphics[width=\linewidth]{"./images/exploits-runtime.png"} + \caption{Number of Nodes and Exploits (Averaged) vs. Runtime (ms)} + \label{fig:nodes-exp} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=\linewidth]{"./images/applicability-runtime.png"} + \includegraphics[width=\linewidth]{"./images/dbload-runtime.png"} + \caption{Applicability of Exploits (\%) and Database Load (\%) (Averaged) vs. Runtime (ms)} + \label{fig:appl-load} +\end{figure} + +In terms of speedup, when the number of entries in the exploit list is small, the serial approach has better performance. As discussed in Section \ref{sec:Task-perf-expec}, this is expected due to the time elapsed for the communication cost exceeding the time taken to generate a state. However, as the number of items in the exploit list increase, the Tasking Approach quickly begins to outperform the serial approach. It is notable that even when the tasking pipeline is not fully saturated (when there are less compute nodes assigned than tasks), the performance is still approximately equal to that of the serial approach. The other noticeable feature is that as more compute nodes are assigned, the speedup continues to increase. + +Figure \ref{fig:overall-speedup} displays the overall minimum, maximum, and mean of speedup across all problem sizes. It is observable through the mean and maximum bars that as other problem size parameters increase, the speedup of the Tasking Approach also increases. Since database load, applicability of exploits, and number of exploits all affect the runtime, increasing the problem size through any of these parameters showcases the viability of the parallelized approach. At the same time, it is worth noting that the parallelized approach is not strictly better. The minimum speedups shown in Figure \ref{fig:overall-speedup} demonstrate that for small problem sizes, the serial approach performs better due to the communication costs. + +\begin{figure}[htp] + \centering + \includegraphics[width=\linewidth]{"./images/overall-speedup.png"} + \vspace{.2truein} \centerline{} + \caption{Minimum, Maximum, and Mean Speedups of MPI Tasking Across All Problem Sizes} + \label{fig:overall-speedup} +\end{figure} + +Figure \ref{fig:overall-efficiency} displays the overall minimum, maximum, and mean of efficiency across all problem sizes. In terms of efficiency, 2 compute nodes offer the greatest value. While the 2 compute node configuration does offer the greatest efficiency, it does not provide a speedup greater than 1.0 on any of the testing cases conducted. The results also demonstrate that an odd number of compute nodes in a fully saturated pipeline has better efficiency that an even number of compute nodes. When referring to Figure \ref{fig:node-alloc}, when there is an odd number number of compute nodes, Task 1 is allocated more nodes than Task 2. Task 1 was responsible for iterating through an increased size of the exploit list, so more nodes is advantageous in distributing the workload. However, when many exploits were not applicable, Task 2 had a lower workload. Some test cases only had 6 applicable exploits, which is a substantially lower workload for Task 2 compared to cases where Task 1 had upwards of 49,000 exploits. As the applicability of exploits increase, the disparity in efficiency for odd and even number of nodes is not present. + +\begin{figure}[htp] + \centering + \includegraphics[width=\linewidth]{"./images/overall-efficiency.png"} + \vspace{.2truein} \centerline{} + \caption{Minimum, Maximum, and Mean Efficiencies of MPI Tasking Across All Problem Sizes} + \label{fig:overall-efficiency} +\end{figure} + \section{Results} \label{sec:Tasking-Results} A series of tests were conducted on the platform described at the beginning of Section \ref{sec:test-platform}, and results were collected in regards to the effect of the MPI Tasking approach on increasing sizes of exploit lists for a varying number of nodes. The exploit list initially began with 6 items, and each test scaled the number of exploits by a factor of 2. The final test was with an exploit list with 49,512 entries. If all of the items in these exploit lists were applicable, the runtime would be too great for feasible testing due to the state space explosion. To prevent state-space explosion but still gather valid results, each exploit list in the tests contained 6 exploits that could be applicable, and all remaining exploits were not applicable. The not applicable exploits were created in a fashion similar to that seen in Figure \ref{fig:NA-exp}. By creating a multitude of not applicable exploits, testing can safely be conducted by ensuring state space explosion would not occur while still observing the effectiveness of the tasking approach. @@ -342,7 +390,6 @@ Figures \ref{fig:Tasking-RT}, \ref{fig:Tasking-Spd}, and \ref{fig:Tasking-Eff} d \label{fig:Tasking-Eff} \end{figure} -\section{Analysis} \section{Conclusion and Future Work} \label{sec:FW} diff --git a/images/applicability-runtime.png b/images/applicability-runtime.png new file mode 100644 index 0000000..9666382 Binary files /dev/null and b/images/applicability-runtime.png differ diff --git a/images/dbload-runtime.png b/images/dbload-runtime.png new file mode 100644 index 0000000..7bb44bc Binary files /dev/null and b/images/dbload-runtime.png differ diff --git a/images/exploits-runtime.png b/images/exploits-runtime.png new file mode 100644 index 0000000..5dc3c02 Binary files /dev/null and b/images/exploits-runtime.png differ diff --git a/images/nodes-runtime.png b/images/nodes-runtime.png new file mode 100644 index 0000000..bf4f150 Binary files /dev/null and b/images/nodes-runtime.png differ diff --git a/images/para_coords.png b/images/para_coords.png new file mode 100644 index 0000000..1469ed2 Binary files /dev/null and b/images/para_coords.png differ