diff --git a/Data/.~lock.0_Applicable-Tasking_Data.ods# b/Data/.~lock.0_Applicable-Tasking_Data.ods# deleted file mode 100644 index 41f0c47..0000000 --- a/Data/.~lock.0_Applicable-Tasking_Data.ods# +++ /dev/null @@ -1 +0,0 @@ -,noah,NovaArchSys,13.09.2022 20:30,file:///home/noah/.config/libreoffice/4; \ No newline at end of file diff --git a/Data/Tasking_Data.ods b/Data/Tasking_Data.ods index a898daf..1eb4f5e 100644 Binary files a/Data/Tasking_Data.ods and b/Data/Tasking_Data.ods differ diff --git a/Schrick-Noah_MPI-Tasking.aux b/Schrick-Noah_MPI-Tasking.aux index f7d8491..f94f566 100644 --- a/Schrick-Noah_MPI-Tasking.aux +++ b/Schrick-Noah_MPI-Tasking.aux @@ -27,51 +27,46 @@ \@writefile{toc}{\contentsline {section}{\numberline {II}Related Works}{1}{section.2}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {III}Necessary Components}{1}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-A}}Serialization}{1}{subsection.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IV}Tasking Approach}{1}{section.4}\protected@file@percent } -\newlabel{sec:Tasking-Approach}{{IV}{1}{Tasking Approach}{section.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {IV}Implementation of the Tasking Approach}{1}{section.4}\protected@file@percent } +\newlabel{sec:Tasking-Approach}{{IV}{1}{Implementation of the Tasking Approach}{section.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-A}}Algorithm Design}{1}{subsection.4.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Task Overview of the Attack and Compliance Graph Generation Process}}{2}{figure.1}\protected@file@percent } \newlabel{fig:tasks}{{1}{2}{Task Overview of the Attack and Compliance Graph Generation Process}{figure.1}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}1}Communication Structure}{2}{subsubsection.4.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-B}}Communication Structure}{2}{subsection.4.2}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Node Allocation for each Task}}{2}{figure.2}\protected@file@percent } \newlabel{fig:node-alloc}{{2}{2}{Node Allocation for each Task}{figure.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}2}Task 0}{2}{subsubsection.4.1.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}3}Task 1}{2}{subsubsection.4.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-C}}Task Breakdown}{2}{subsection.4.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}1}Task 0}{2}{subsubsection.4.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}2}Task 1}{2}{subsubsection.4.3.2}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Data Distribution of Task One}}{3}{figure.3}\protected@file@percent } \newlabel{fig:Task1-Data-Dist}{{3}{3}{Data Distribution of Task One}{figure.3}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}}{3}{figure.4}\protected@file@percent } \newlabel{fig:Task1-Case1}{{4}{3}{Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}{figure.4}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}4}Task 2}{3}{subsubsection.4.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}3}Task 2}{3}{subsubsection.4.3.3}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Task 1 to Task 2 Communication, Case 2}}{3}{figure.5}\protected@file@percent } \newlabel{fig:Task1-Case2}{{5}{3}{Task 1 to Task 2 Communication, Case 2}{figure.5}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}5}Task 3}{3}{subsubsection.4.1.5}\protected@file@percent } -\newlabel{sec:T4T5}{{\mbox {IV-A}6}{3}{Task 4 and Task 5}{subsubsection.4.1.6}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}6}Task 4 and Task 5}{3}{subsubsection.4.1.6}\protected@file@percent } -\newlabel{sec:tasking-tag}{{\mbox {IV-A}7}{3}{MPI Tags}{subsubsection.4.1.7}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-A}7}MPI Tags}{3}{subsubsection.4.1.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}4}Task 3}{3}{subsubsection.4.3.4}\protected@file@percent } +\newlabel{sec:T4T5}{{\mbox {IV-C}5}{3}{Task 4 and Task 5}{subsubsection.4.3.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}5}Task 4 and Task 5}{3}{subsubsection.4.3.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-D}}MPI Tags}{3}{subsection.4.4}\protected@file@percent } +\newlabel{sec:tasking-tag}{{\mbox {IV-D}}{3}{MPI Tags}{subsection.4.4}{}} \@writefile{lot}{\contentsline {table}{\numberline {I}{\ignorespaces MPI Tags for the MPI Tasking Approach}}{4}{table.1}\protected@file@percent } \newlabel{table:tasking-tag}{{I}{4}{MPI Tags for the MPI Tasking Approach}{table.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {V}Performance Expectations and Use Cases}{4}{section.5}\protected@file@percent } \newlabel{sec:Task-perf-expec}{{V}{4}{Performance Expectations and Use Cases}{section.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {VI}Experimental Setup}{4}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{4}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Database Load}{4}{subsection.6.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Testing Platform}{4}{subsection.6.3}\protected@file@percent } \@writefile{lot}{\contentsline {table}{\numberline {II}{\ignorespaces Task Descriptions and Performance Notes}}{4}{table.2}\protected@file@percent } \newlabel{table:tasking-gen-perf}{{II}{4}{Task Descriptions and Performance Notes}{table.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{4}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Applicability of Exploits}{4}{subsection.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Database Load}{4}{subsection.6.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{4}{subsection.6.4}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{4}{section.7}\protected@file@percent } \newlabel{sec:Tasking-Results}{{VII}{4}{Results}{section.7}{}} \bibdata{Bibliography} \bibcite{pacheco_introduction_2011}{1} -\bibcite{li_concurrency_2019}{2} -\bibcite{9150145}{3} -\bibcite{7087377}{4} -\bibstyle{ieeetr} \@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Example of a Not Applicable Exploit for the MPI Tasking Testing}}{5}{figure.6}\protected@file@percent } \newlabel{fig:NA-exp}{{6}{5}{Example of a Not Applicable Exploit for the MPI Tasking Testing}{figure.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{5}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{5}{section.9}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{5}{section*.3}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{5}{figure.7}\protected@file@percent } \newlabel{fig:Spd-Eff-Task}{{7}{5}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.7}{}} \@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces MPI Tasking Approach Runtime Results}}{5}{figure.8}\protected@file@percent } @@ -80,4 +75,11 @@ \newlabel{fig:Tasking-Spd}{{9}{5}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.9}{}} \@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{5}{figure.10}\protected@file@percent } \newlabel{fig:Tasking-Eff}{{10}{5}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.10}{}} -\gdef \@abspage@last{5} +\bibcite{li_concurrency_2019}{2} +\bibcite{9150145}{3} +\bibcite{7087377}{4} +\bibstyle{ieeetr} +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{6}{section.8}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{6}{section.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{6}{section*.1}\protected@file@percent } +\gdef \@abspage@last{6} diff --git a/Schrick-Noah_MPI-Tasking.log b/Schrick-Noah_MPI-Tasking.log index 5bb7b94..9c7c387 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.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex 2022.4.29) 13 SEP 2022 14:31 +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex 2022.4.29) 4 OCT 2022 23:28 entering extended mode restricted \write18 enabled. %&-line parsing enabled. -**Schrick-Noah_MPI-Tasking.tex +**Schrick-Noah_MPI-Tasking (./Schrick-Noah_MPI-Tasking.tex LaTeX2e <2021-11-15> patch level 1 L3 programming layer <2022-04-10> @@ -486,29 +486,25 @@ MPI; [] -LaTeX Warning: Reference `sec:gen_improv' on page 1 undefined on input line 57. +LaTeX Warning: Reference `sec:gen_improv' on page 1 undefined on input line 58. LaTeX Warning: Reference `sec:related_works' on page 1 undefined on input line -57. +58. - -LaTeX Warning: Reference `sec:Subgraphing_Approach' on page 1 undefined on inpu -t line 57. - -<./images/horiz_task.drawio.png, id=98, 1181.41376pt x 785.93625pt> +<./images/horiz_task.drawio.png, id=105, 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 94. +Package pdftex.def Info: ./images/horiz_task.drawio.png used on input line 95. (pdftex.def) Requested size: 252.0pt x 167.64183pt. -LaTeX Font Info: Trying to load font information for U+msa on input line 101 +LaTeX Font Info: Trying to load font information for U+msa on input line 102 . (/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 101 +LaTeX Font Info: Trying to load font information for U+msb on input line 102 . (/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd @@ -517,116 +513,116 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B ] -<./images/node-alloc.png, id=115, 818.30719pt x 536.75531pt> +<./images/node-alloc.png, id=122, 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 106. +Package pdftex.def Info: ./images/node-alloc.png used on input line 107. (pdftex.def) Requested size: 252.0pt x 165.29492pt. -Underfull \hbox (badness 10000) in paragraph at lines 113--114 - \OT1/ptm/m/it/10 1) Communication Structure: [][][] \OT1/ptm/m/n/10 The underl -ying - [] +LaTeX Warning: Reference `sec:db-stor' on page 2 undefined on input line 118. -Underfull \hbox (badness 1603) in paragraph at lines 113--114 -\OT1/ptm/m/n/10 communication structure for the tasking approach relies - [] - - -LaTeX Warning: Reference `sec:db-stor' on page 2 undefined on input line 116. - -<./images/Task1-Data-Dist.png, id=118, 597.98407pt x 197.48781pt> +<./images/Task1-Data-Dist.png, id=125, 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 122. +Package pdftex.def Info: ./images/Task1-Data-Dist.png used on input line 124. (pdftex.def) Requested size: 252.0pt x 83.22455pt. [2 <./images/horiz_task.drawio.png> <./images/node-alloc.PNG>] -<./images/Task1-Case1.png, id=131, 586.44093pt x 339.51843pt> +<./images/Task1-Case1.png, id=138, 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 131. +Package pdftex.def Info: ./images/Task1-Case1.png used on input line 133. (pdftex.def) Requested size: 252.0pt x 145.89163pt. -<./images/Task1-Case2.png, id=132, 702.37407pt x 414.79968pt> +<./images/Task1-Case2.png, id=139, 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 138. +Package pdftex.def Info: ./images/Task1-Case2.png used on input line 140. (pdftex.def) Requested size: 252.0pt x 148.82143pt. -LaTeX Warning: Reference `fig:sync-fire' on page 3 undefined on input line 145. +LaTeX Warning: Reference `fig:sync-fire' on page 3 undefined on input line 147. -LaTeX Warning: Reference `sec:db-stor' on page 3 undefined on input line 151. +LaTeX Warning: Reference `sec:db-stor' on page 3 undefined on input line 153. [3 <./images/Task1-Data-Dist.PNG> <./images/Task1-Case1.PNG> <./images/Task1-Ca se2.PNG>] LaTeX Warning: No positions in optional float specifier. - Default added (so using `tbp') on input line 156. + Default added (so using `tbp') on input line 158. -LaTeX Warning: Reference `sec:Intro' on page 4 undefined on input line 184. +LaTeX Warning: Reference `sec:Intro' on page 4 undefined on input line 186. -LaTeX Warning: Reference `sec:CG-diff' on page 4 undefined on input line 184. +LaTeX Warning: Reference `sec:CG-diff' on page 4 undefined on input line 186. + + +Underfull \hbox (badness 1389) in paragraph at lines 189--190 +\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 187. + Default added (so using `tbp') on input line 191. -Underfull \hbox (badness 5022) in paragraph at lines 210--212 -[]\OT1/ptm/m/n/10 Looping through MPI Nodes, Number of Exploits, +Underfull \hbox (badness 7451) in paragraph at lines 225--226 +\OT1/ptm/m/n/10 All nodes are connected with a 10Gbps Infiniband [] LaTeX Warning: Reference `sec:test-platform' on page 4 undefined on input line -214. +228. + +[4] + +LaTeX Warning: Reference `sec:FW' on page 5 undefined on input line 232. -LaTeX Warning: Reference `sec:FW' on page 4 undefined on input line 218. - - -Underfull \hbox (badness 3713) in paragraph at lines 218--219 +Underfull \hbox (badness 3713) in paragraph at lines 232--233 []\OT1/ptm/m/n/10 In terms of efficiency, 2 compute nodes offer the [] -[4] -<./images/NA.png, id=159, 369.38pt x 118.4425pt> +<./images/NA.png, id=166, 369.38pt x 118.4425pt> File: ./images/NA.png Graphic file (type png) -Package pdftex.def Info: ./images/NA.png used on input line 224. +Package pdftex.def Info: ./images/NA.png used on input line 238. (pdftex.def) Requested size: 184.68954pt x 59.2211pt. -<./images/Speedup-Esize-Tasking.png, id=160, 620.208pt x 321.93pt> +<./images/Speedup-Esize-Tasking.png, id=167, 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 - 232. + 246. (pdftex.def) Requested size: 252.0pt x 130.80338pt. -<./images/Eff-Esize-Tasking.png, id=161, 620.208pt x 322.149pt> +<./images/Eff-Esize-Tasking.png, id=168, 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 233 +Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 247 . (pdftex.def) Requested size: 252.0pt x 130.89236pt. -<./images/Tasking_RT.png, id=162, 860.46469pt x 257.96375pt> +<./images/Tasking_RT.png, id=169, 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 240. +Package pdftex.def Info: ./images/Tasking_RT.png used on input line 254. (pdftex.def) Requested size: 252.0pt x 75.54756pt. -<./images/Tasking_Spd.png, id=163, 860.46469pt x 276.53313pt> +<./images/Tasking_Spd.png, id=170, 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 247. +Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 261. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -<./images/Tasking_Eff.png, id=164, 860.46469pt x 276.53313pt> +<./images/Tasking_Eff.png, id=171, 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 254. +Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 268. (pdftex.def) Requested size: 252.0pt x 80.98582pt. - (./Schrick-Noah_MPI-Tasking.bbl) +(./Schrick-Noah_MPI-Tasking.bbl +Underfull \vbox (badness 10000) has occurred while \output is active [] + + [5 <./images/NA.png> <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize- +Tasking.png> <./images/Tasking_RT.png> <./images/Tasking_Spd.png> <./images/Tas +king_Eff.png>]) ** Conference Paper ** Before submitting the final camera ready copy, remember to: @@ -638,33 +634,34 @@ 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. -[5 <./images/NA.png> <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize-T -asking.png> <./images/Tasking_RT.png> <./images/Tasking_Spd.png> <./images/Task -ing_Eff.png>] (./Schrick-Noah_MPI-Tasking.aux) +[6 + +] (./Schrick-Noah_MPI-Tasking.aux) LaTeX Warning: There were undefined references. Package rerunfilecheck Info: File `Schrick-Noah_MPI-Tasking.out' has not change d. -(rerunfilecheck) Checksum: 90D683B99C078EF678C75764E234217B;2767. +(rerunfilecheck) Checksum: CB4364753E2594613B2E0BA2E8950C88;3186. ) Here is how much of TeX's memory you used: - 12097 strings out of 478238 + 12099 strings out of 478238 191809 string characters out of 5850456 - 517020 words of memory out of 5000000 - 30117 multiletter control sequences out of 15000+600000 + 518036 words of memory out of 5000000 + 30118 multiletter control sequences out of 15000+600000 508499 words of font info for 101 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 60i,14n,63p,1538b,347s stack positions out of 5000i,500n,10000p,200000b,80000s + 60i,14n,63p,1534b,490s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on Schrick-Noah_MPI-Tasking.pdf (5 pages, 947484 bytes). +ts/type1/public/amsfonts/cm/cmr7.pfb>< +/usr/share/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb> +Output written on Schrick-Noah_MPI-Tasking.pdf (6 pages, 957078 bytes). PDF statistics: - 212 PDF objects out of 1000 (max. 8388607) - 175 compressed objects within 2 object streams - 46 named destinations out of 1000 (max. 500000) - 232 words of extra memory for PDF output out of 10000 (max. 10000000) + 227 PDF objects out of 1000 (max. 8388607) + 187 compressed objects within 2 object streams + 47 named destinations out of 1000 (max. 500000) + 248 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 d234e65..74c893e 100644 --- a/Schrick-Noah_MPI-Tasking.out +++ b/Schrick-Noah_MPI-Tasking.out @@ -2,21 +2,23 @@ \BOOKMARK [1][-]{section.2}{\376\377\000R\000e\000l\000a\000t\000e\000d\000\040\000W\000o\000r\000k\000s}{}% 2 \BOOKMARK [1][-]{section.3}{\376\377\000N\000e\000c\000e\000s\000s\000a\000r\000y\000\040\000C\000o\000m\000p\000o\000n\000e\000n\000t\000s}{}% 3 \BOOKMARK [2][-]{subsection.3.1}{\376\377\000S\000e\000r\000i\000a\000l\000i\000z\000a\000t\000i\000o\000n}{section.3}% 4 -\BOOKMARK [1][-]{section.4}{\376\377\000T\000a\000s\000k\000i\000n\000g\000\040\000A\000p\000p\000r\000o\000a\000c\000h}{}% 5 +\BOOKMARK [1][-]{section.4}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000T\000a\000s\000k\000i\000n\000g\000\040\000A\000p\000p\000r\000o\000a\000c\000h}{}% 5 \BOOKMARK [2][-]{subsection.4.1}{\376\377\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000D\000e\000s\000i\000g\000n}{section.4}% 6 -\BOOKMARK [3][-]{subsubsection.4.1.1}{\376\377\000C\000o\000m\000m\000u\000n\000i\000c\000a\000t\000i\000o\000n\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e}{subsection.4.1}% 7 -\BOOKMARK [3][-]{subsubsection.4.1.2}{\376\377\000T\000a\000s\000k\000\040\0000}{subsection.4.1}% 8 -\BOOKMARK [3][-]{subsubsection.4.1.3}{\376\377\000T\000a\000s\000k\000\040\0001}{subsection.4.1}% 9 -\BOOKMARK [3][-]{subsubsection.4.1.4}{\376\377\000T\000a\000s\000k\000\040\0002}{subsection.4.1}% 10 -\BOOKMARK [3][-]{subsubsection.4.1.5}{\376\377\000T\000a\000s\000k\000\040\0003}{subsection.4.1}% 11 -\BOOKMARK [3][-]{subsubsection.4.1.6}{\376\377\000T\000a\000s\000k\000\040\0004\000\040\000a\000n\000d\000\040\000T\000a\000s\000k\000\040\0005}{subsection.4.1}% 12 -\BOOKMARK [3][-]{subsubsection.4.1.7}{\376\377\000M\000P\000I\000\040\000T\000a\000g\000s}{subsection.4.1}% 13 -\BOOKMARK [1][-]{section.5}{\376\377\000P\000e\000r\000f\000o\000r\000m\000a\000n\000c\000e\000\040\000E\000x\000p\000e\000c\000t\000a\000t\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000U\000s\000e\000\040\000C\000a\000s\000e\000s}{}% 14 -\BOOKMARK [1][-]{section.6}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000S\000e\000t\000u\000p}{}% 15 -\BOOKMARK [2][-]{subsection.6.1}{\376\377\000N\000u\000m\000b\000e\000r\000\040\000o\000f\000\040\000E\000x\000p\000l\000o\000i\000t\000s}{section.6}% 16 -\BOOKMARK [2][-]{subsection.6.2}{\376\377\000D\000a\000t\000a\000b\000a\000s\000e\000\040\000L\000o\000a\000d}{section.6}% 17 -\BOOKMARK [2][-]{subsection.6.3}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000P\000l\000a\000t\000f\000o\000r\000m}{section.6}% 18 -\BOOKMARK [1][-]{section.7}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 19 -\BOOKMARK [1][-]{section.8}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 20 -\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 21 -\BOOKMARK [1][-]{section*.3}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 22 +\BOOKMARK [2][-]{subsection.4.2}{\376\377\000C\000o\000m\000m\000u\000n\000i\000c\000a\000t\000i\000o\000n\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e}{section.4}% 7 +\BOOKMARK [2][-]{subsection.4.3}{\376\377\000T\000a\000s\000k\000\040\000B\000r\000e\000a\000k\000d\000o\000w\000n}{section.4}% 8 +\BOOKMARK [3][-]{subsubsection.4.3.1}{\376\377\000T\000a\000s\000k\000\040\0000}{subsection.4.3}% 9 +\BOOKMARK [3][-]{subsubsection.4.3.2}{\376\377\000T\000a\000s\000k\000\040\0001}{subsection.4.3}% 10 +\BOOKMARK [3][-]{subsubsection.4.3.3}{\376\377\000T\000a\000s\000k\000\040\0002}{subsection.4.3}% 11 +\BOOKMARK [3][-]{subsubsection.4.3.4}{\376\377\000T\000a\000s\000k\000\040\0003}{subsection.4.3}% 12 +\BOOKMARK [3][-]{subsubsection.4.3.5}{\376\377\000T\000a\000s\000k\000\040\0004\000\040\000a\000n\000d\000\040\000T\000a\000s\000k\000\040\0005}{subsection.4.3}% 13 +\BOOKMARK [2][-]{subsection.4.4}{\376\377\000M\000P\000I\000\040\000T\000a\000g\000s}{section.4}% 14 +\BOOKMARK [1][-]{section.5}{\376\377\000P\000e\000r\000f\000o\000r\000m\000a\000n\000c\000e\000\040\000E\000x\000p\000e\000c\000t\000a\000t\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000U\000s\000e\000\040\000C\000a\000s\000e\000s}{}% 15 +\BOOKMARK [1][-]{section.6}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000S\000e\000t\000u\000p}{}% 16 +\BOOKMARK [2][-]{subsection.6.1}{\376\377\000N\000u\000m\000b\000e\000r\000\040\000o\000f\000\040\000E\000x\000p\000l\000o\000i\000t\000s}{section.6}% 17 +\BOOKMARK [2][-]{subsection.6.2}{\376\377\000A\000p\000p\000l\000i\000c\000a\000b\000i\000l\000i\000t\000y\000\040\000o\000f\000\040\000E\000x\000p\000l\000o\000i\000t\000s}{section.6}% 18 +\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 [1][-]{section.7}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 21 +\BOOKMARK [1][-]{section.8}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 22 +\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 23 +\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 24 diff --git a/Schrick-Noah_MPI-Tasking.pdf b/Schrick-Noah_MPI-Tasking.pdf index 9c2ee89..f291e1a 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 f314fa9..398763a 100644 --- a/Schrick-Noah_MPI-Tasking.tex +++ b/Schrick-Noah_MPI-Tasking.tex @@ -52,9 +52,10 @@ Attack Graph; Compliance Graph; MPI; High-Performance Computing; Cybersecurity; \end{IEEEkeywords} \section{Introduction} +This work attempts to further those efforts and extend RAGE 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 the most widely used message-passing API, and this work intended 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. \section{Related Works} -Previous works for graph generation, and specifically for attack graph generation, have seen promising results as discussed in Sections \ref{sec:gen_improv} and \ref{sec:related_works}. This work attempts to further those efforts and extend RAGE 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 the most widely used message-passing API, and this work intended to utilize an API that was not only familiar and accessible, but versatile and powerful for parallelizing RAGE for distributed computing platforms. This Chapter discusses two approaches for parallelism: task parallelism in Section \ref{sec:Tasking-Approach}, and data parallelism in Section \ref{sec:Subgraphing_Approach}. All approaches in this work utilize OpenMPI for the MPI implementation. +Previous works for graph generation, and specifically for attack graph generation, have seen promising results as discussed in Sections \ref{sec:gen_improv} and \ref{sec:related_works}. \section{Necessary Components} \subsection{Serialization} @@ -82,7 +83,7 @@ class instances are altered directly. This was preferable to the non-intrusive a the class instances were able to be altered with relative ease, and many of the class instances did not expose enough information for the non-intrusive approach to be viable. -\section{Tasking Approach} \label{sec:Tasking-Approach} +\section{Implementation of the Tasking Approach} \label{sec:Tasking-Approach} The high-level overview of the attack and compliance graph generation process can be broken down into six main tasks. These tasks are described in Figure \ref{fig:tasks}. Prior works such as that seen by the authors of \cite{li_concurrency_2019}, \cite{9150145}, and \cite{7087377} work to parallelize the graph generation using @@ -109,9 +110,10 @@ For determining which tasks should be handled by the root note, a few considerat \label{fig:node-alloc} \end{figure} -\subsubsection{Communication Structure} +\subsection{Communication Structure} The underlying communication structure for the tasking approach relies on a pseudo-ring structure. As seen in Figure \ref{fig:node-alloc}, nodes n$_2$, n$_3$, and n$_4$ are derived from the previous task's greatest node rank. To keep the development abstract, a custom send function checks the world size (``world.size()") before sending. If the rank of the node that would receive a message is greater than the world size and therefore does not exist, the rank would then be ``looped around" and corrected to fit within the world size constraints. After the rank correction, the MPI Send function was then invoked with the proper node rank. +\subsection{Task Breakdown} \subsubsection{Task 0} Task 0 is performed by the root node, and is a conditional task; it is not guaranteed to be executed at each pipeline iteration. Task 0 is only executed when the frontier is empty, but the database still holds unexplored states. This occurs when there are memory constraints, and database storage is performed during execution to offload the demand, as discussed in Section \ref{sec:db-stor}. After the completion of Task 0, the frontier has a state popped, and the root node sends the state to n$_1$. If the frontier is empty, the root node sends the finalize signal to all nodes. @@ -150,7 +152,7 @@ Task 3 is performed only by the root node, and no division of work is necessary. \subsubsection{Task 4 and Task 5} \label{sec:T4T5} Intermediate database operations, though not frequent and may never occur for small graphs, are lengthy and time-consuming when they do occur. As discussed in Section \ref{sec:db-stor}, the two main memory consumers are the frontier and the instance, both of which are contained by the root node's memory. Since the database storage requests are blocking, the pipeline would halt for a lengthy period of time while waiting for the root node to finish potentially two large storages. Tasks 4 and 5 work to alleviate the stall by executing independently of the regular pipeline execution flow. Since Tasks 4 and 5 do not send any data, no other tasks must wait for these tasks to complete. The root node can then asynchronously send the frontier and instance to the appropriate nodes as needed, clear its memory, and continue execution without delay. After initial testing, it was determined that the communication cost of the asynchronous sending of data for Tasks 4 and 5 is less than the time requirement of a database storage operation if performed by the root node. -\subsubsection{MPI Tags} \label{sec:tasking-tag} +\subsection{MPI Tags} \label{sec:tasking-tag} To ensure that the intended message is received by each node, the MPI message envelopes have their tag fields specified. When a node sends a message, it specifies a tag that corresponds with the data and intent for which it is sent. The tag values were arbitrarily chosen, and tags can be added to the existing list or removed as desired. When receiving a message, a node can specify to only look for messages that have an envelope with a matching tag field. Not only do tags ensure that nodes are receiving the correct messages, they also reduce complexity for program design. Table \ref{table:tasking-tag} displays the list of tags used for the MPI Tasking approach. \begin{table}[] @@ -184,17 +186,22 @@ To ensure that the intended message is received by each node, the MPI message en Due to the amount of communication between nodes to distribute the necessary data through all stages of the tasking pipeline, this approach is not expected to outperform the serial approach in all cases. This tasking approach was specifically designed to reduce the computation time when the generation of each individual state increases in time. This approach does not offer any guarantees of processing through the frontier at an increased rate; it's main objective is to distribute the workload of individual state generation. As discussed in Section \ref{sec:Intro}, the amount of entries in the National Vulnerability database and any custom vulnerability testing to ensure adequate examination of all assets in the network sums to large number of exploits in the exploit list. Likewise for compliance graphs and compliance examinations, Section \ref{sec:CG-diff} discussed that the number of compliance checks for SOX, HIPAA, GDPR, PCI DSS, and/or any other regulatory compliance also sums to a large number of compliance checks in the exploit list. Since the generation of each state is largely dependent on the number of exploits present in the exploit list, this approach is best-suited for when the exploit list grows in size. As will be later discussed, it is also hypothesized that this approach is well-suited when many database operations occur. \section{Experimental Setup} +In order to capture a comprehensive image of the tasking approach's impact on performance, a number of parameters were altered and the generation properties were examined. Table \ref{table:tasking-gen-perf} presents each task and the parameters that affect the performance of each task. Generating larger graphs would increase the runtime, but does not necessarily stress each task or provide a consistent, reliable way to draw conclusions regarding the tasking approach. In order to ensure consistency across the experimental testing and minimize the possibility of introducing bias, all tests generated the exact same graph. All tests would generate the same graph with identical numbers of states, identical numbers of edges, identical labeling, and identical inner workings and underlying properties. The following subsections describe the altered parameters, the manner in which they were altered, and how data integrity of the resulting graph was preserved. The parameter alteration process focused on avoiding artificial inflation of the performance metrics, and each subsection emphasizes the practicality of each altered parameter. + \begin{table}[] \centering \begin{tabular}{|c|c|c|} \hline - \textbf{Task} & \textbf{Shortened Description} & \textbf{\begin{tabular}[c]{@{}c@{}}Performance\\ Affected By\end{tabular}} \\ \hline - 0 & Retrieve Next State & Database Load \\ \hline - 1 & \begin{tabular}[c]{@{}c@{}}Compile List of \\ Applicable Exploits\end{tabular} & Number of Exploits \\ \hline - 2 & \begin{tabular}[c]{@{}c@{}}Loop through List of\\ Applicable Exploits\end{tabular} & \begin{tabular}[c]{@{}c@{}}Number of\\ Applicable Exploits\end{tabular} \\ \hline - 3 & Bookkeeping & \\ \hline - 4 & \begin{tabular}[c]{@{}c@{}}C/R and/or memory\\ clear of graph instance\end{tabular} & Database Load \\ \hline - 5 & \begin{tabular}[c]{@{}c@{}}C/R and/or memory\\ clear of frontier\end{tabular} & Database Load \\ \hline + \textbf{Task} + & \textbf{Shortened Description} + & \textbf{\begin{tabular}[c]{@{}c@{}}Performance\\ Affected By\end{tabular}} + \\ \hline + 0 & Retrieve Next State & Database Load \\ \hline + 1 & \begin{tabular}[c]{@{}c@{}}Compile List of \\ Applicable Exploits\end{tabular} & Number of Exploits \\ \hline + 2 & \begin{tabular}[c]{@{}c@{}}Loop through List of\\ Applicable Exploits\end{tabular} & \begin{tabular}[c]{@{}c@{}}Number of\\ Applicable Exploits\end{tabular} \\ \hline + 3 & Bookkeeping & Number of States \\ \hline + 4 & \begin{tabular}[c]{@{}c@{}}C/R and/or memory\\ clear of graph instance\end{tabular} & Database Load \\ \hline + 5 & \begin{tabular}[c]{@{}c@{}}C/R and/or memory\\ clear of frontier\end{tabular} & Database Load \\ \hline \end{tabular} \caption{Task Descriptions and Performance Notes} \label{table:tasking-gen-perf} @@ -202,13 +209,20 @@ Due to the amount of communication between nodes to distribute the necessary dat \subsection{Number of Exploits} +\subsection{Applicability of Exploits} + \subsection{Database Load} \subsection{Testing Platform} -Hammer - -Looping through MPI Nodes, Number of Exploits, Applicability of Exploits, Database Loads -Then compute Speedup with Amdahl and Gufs, then Eff for both +All data was collected on a 13 node cluster, with 12 nodes serving as dedicated compute nodes, and 1 node serving as the login node. Each compute node has a configuration as follows: +\begin{itemize} +\item{OS: CentOS release 6.9} +\item{CPU: Two Intel Xeon E5-2620 v3} +\item{Two Intel Xeon Phi Co-Processors} +\item{One FPGA (Nallatech PCIE-385n A7 Altera Stratix V)} +\item{Memory: 64318MiB} +\end{itemize} +All nodes are connected with a 10Gbps Infiniband interconnect. \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. @@ -260,10 +274,6 @@ Figures \ref{fig:Tasking-RT}, \ref{fig:Tasking-Spd}, and \ref{fig:Tasking-Eff} d \section{Conclusion} -\section*{Acknowledgment} - -\section*{References} - %\bibliographyp \bibliography{Bibliography} \bibliographystyle{ieeetr} diff --git a/images/Tasking_Desc_Table.png b/images/Tasking_Desc_Table.png new file mode 100644 index 0000000..0821a59 Binary files /dev/null and b/images/Tasking_Desc_Table.png differ