Cleaning up null references to mislabeled/unlabeled sections

This commit is contained in:
Noah L. Schrick 2023-04-06 16:23:15 -05:00
parent b74cf8ee26
commit 20ae160f42
6 changed files with 106 additions and 110 deletions

View File

@ -32,6 +32,7 @@
\citation{dai_fpgp_2016}
\babel@aux{nil}{}
\@writefile{toc}{\contentsline {section}{\numberline {I}Introduction}{1}{section.1}\protected@file@percent }
\newlabel{sec:Intro}{{I}{1}{Introduction}{section.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {II}Related Works}{1}{section.2}\protected@file@percent }
\newlabel{sec:rel_works}{{II}{1}{Related Works}{section.2}{}}
\citation{arifuzzaman_fast_2015}
@ -74,36 +75,45 @@
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}4}Task 3}{4}{subsubsection.4.3.4}\protected@file@percent }
\newlabel{sec:T4T5}{{\mbox {IV-C}5}{4}{Task 4 and Task 5}{subsubsection.4.3.5}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IV-C}5}Task 4 and Task 5}{4}{subsubsection.4.3.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-D}}MPI Tags}{4}{subsection.4.4}\protected@file@percent }
\newlabel{sec:tasking-tag}{{\mbox {IV-D}}{4}{MPI Tags}{subsection.4.4}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Program Flow of Synchronous Firing in Task 2}}{5}{figure.6}\protected@file@percent }
\newlabel{fig:sync-fire}{{6}{5}{Program Flow of Synchronous Firing in Task 2}{figure.6}{}}
\@writefile{lot}{\contentsline {table}{\numberline {I}{\ignorespaces MPI Tags for the MPI Tasking Approach}}{5}{table.1}\protected@file@percent }
\newlabel{table:tasking-tag}{{I}{5}{MPI Tags for the MPI Tasking Approach}{table.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IV-D}}MPI Tags}{5}{subsection.4.4}\protected@file@percent }
\newlabel{sec:tasking-tag}{{\mbox {IV-D}}{5}{MPI Tags}{subsection.4.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {V}Performance Expectations and Use Cases}{5}{section.5}\protected@file@percent }
\newlabel{sec:Task-perf-expec}{{V}{5}{Performance Expectations and Use Cases}{section.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {VI}Experimental Setup}{5}{section.6}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {II}{\ignorespaces Task Descriptions and Performance Notes}}{5}{table.2}\protected@file@percent }
\newlabel{table:tasking-gen-perf}{{II}{5}{Task Descriptions and Performance Notes}{table.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{5}{subsection.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Applicability of Exploits}{5}{subsection.6.2}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {II}{\ignorespaces Task Descriptions and Performance Notes}}{6}{table.2}\protected@file@percent }
\newlabel{table:tasking-gen-perf}{{II}{6}{Task Descriptions and Performance Notes}{table.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {VI}Experimental Setup}{6}{section.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{6}{subsection.6.1}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Example of a Not Applicable Exploit for the MPI Tasking Testing}}{6}{figure.7}\protected@file@percent }
\newlabel{fig:NA-exp}{{7}{6}{Example of a Not Applicable Exploit for the MPI Tasking Testing}{figure.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Applicability of Exploits}{6}{subsection.6.2}\protected@file@percent }
\citation{cook_rage_2018}
\citation{li_concurrency_2019}
\citation{li_combining_2019}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Example of a Not Applicable Exploit for the MPI Tasking Testing}}{6}{figure.6}\protected@file@percent }
\newlabel{fig:NA-exp}{{6}{6}{Example of a Not Applicable Exploit for the MPI Tasking Testing}{figure.6}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Example of an Artificially Applicable Exploit for the MPI Tasking Testing}}{6}{figure.7}\protected@file@percent }
\newlabel{fig:Appl-exp}{{7}{6}{Example of an Artificially Applicable Exploit for the MPI Tasking Testing}{figure.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Database Load}{6}{subsection.6.3}\protected@file@percent }
\citation{Slurm}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Example of an Artificially Applicable Exploit for the MPI Tasking Testing}}{7}{figure.8}\protected@file@percent }
\newlabel{fig:Appl-exp}{{8}{7}{Example of an Artificially Applicable Exploit for the MPI Tasking Testing}{figure.8}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Database Load}{7}{subsection.6.3}\protected@file@percent }
\newlabel{sec:db-stor}{{\mbox {VI-C}}{7}{Database Load}{subsection.6.3}{}}
\@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 }
\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 {12}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{8}{figure.12}\protected@file@percent }
\newlabel{fig:Tasking-Eff}{{12}{8}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.12}{}}
\bibcite{7993827}{2}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{7}{subsection.6.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Testing Process}{7}{subsection.6.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{7}{section.7}\protected@file@percent }
\newlabel{sec:Tasking-Results}{{VII}{7}{Results}{section.7}{}}
\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{7}{section.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{7}{section.9}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{References}{7}{section*.1}\protected@file@percent }
\bibcite{8652334}{3}
\bibcite{baloyi_guidelines_2019}{4}
\bibcite{allman_complying_2006}{5}
@ -126,16 +136,12 @@
\bibcite{cook_scalable_2016}{22}
\bibcite{li_concurrency_2019}{23}
\bibcite{9150145}{24}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{8}{figure.8}\protected@file@percent }
\newlabel{fig:Spd-Eff-Task}{{8}{8}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.8}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces MPI Tasking Approach Runtime Results}}{8}{figure.9}\protected@file@percent }
\newlabel{fig:Tasking-RT}{{9}{8}{MPI Tasking Approach Runtime Results}{figure.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{8}{figure.10}\protected@file@percent }
\newlabel{fig:Tasking-Spd}{{10}{8}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.10}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{8}{figure.11}\protected@file@percent }
\newlabel{fig:Tasking-Eff}{{11}{8}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.11}{}}
\bibcite{7087377}{25}
\bibcite{li_combining_2019}{26}
\bibcite{Slurm}{27}
\bibstyle{ieeetr}
\@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}

View File

@ -1,4 +1,4 @@
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:05
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:22
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -551,116 +551,105 @@ File: ./images/node-alloc.png Graphic file (type png)
<use ./images/node-alloc.png>
Package pdftex.def Info: ./images/node-alloc.png used on input line 128.
(pdftex.def) Requested size: 252.0pt x 165.29492pt.
LaTeX Warning: Reference `sec:db-stor' on page 3 undefined on input line 139.
<./images/Task1-Data-Dist.png, id=187, 597.98407pt x 197.48781pt>
<./images/Task1-Data-Dist.png, id=188, 597.98407pt x 197.48781pt>
File: ./images/Task1-Data-Dist.png Graphic file (type png)
<use ./images/Task1-Data-Dist.png>
Package pdftex.def Info: ./images/Task1-Data-Dist.png used on input line 145.
(pdftex.def) Requested size: 252.0pt x 83.22455pt.
[3 <./images/horiz_task.drawio.png> <./images/node-alloc.PNG>]
<./images/Task1-Case1.png, id=200, 586.44093pt x 339.51843pt>
<./images/Task1-Case1.png, id=201, 586.44093pt x 339.51843pt>
File: ./images/Task1-Case1.png Graphic file (type png)
<use ./images/Task1-Case1.png>
Package pdftex.def Info: ./images/Task1-Case1.png used on input line 154.
(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=202, 702.37407pt x 414.79968pt>
File: ./images/Task1-Case2.png Graphic file (type png)
<use ./images/Task1-Case2.png>
Package pdftex.def Info: ./images/Task1-Case2.png used on input line 161.
(pdftex.def) Requested size: 252.0pt x 148.82143pt.
<./images/Sync-Fire.png, id=204, 489.83pt x 1053.9375pt>
File: ./images/Sync-Fire.png Graphic file (type png)
<use ./images/Sync-Fire.png>
Package pdftex.def Info: ./images/Sync-Fire.png used on input line 171.
(pdftex.def) Requested size: 252.0pt x 542.21298pt.
Underfull \vbox (badness 10000) has occurred while \output is active []
LaTeX Warning: Reference `fig:sync-fire' on page 4 undefined on input line 168.
LaTeX Warning: Reference `sec:db-stor' on page 4 undefined on input line 174.
[4 <./images/Task1-Data-Dist.PNG> <./images/Task1-Case1.PNG> <./images/Task1-Ca
se2.PNG>]
[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 179.
Default added (so using `tbp') on input line 186.
LaTeX Warning: Reference `sec:Intro' on page 5 undefined on input line 207.
LaTeX Warning: Reference `sec:CG-diff' on page 5 undefined on input line 207.
Underfull \hbox (badness 1389) in paragraph at lines 210--211
Underfull \hbox (badness 1389) in paragraph at lines 217--218
\OT1/ptm/m/n/10 the performance of each task. Generating larger graphs
[]
[5 <./images/Sync-Fire.png>]
LaTeX Warning: No positions in optional float specifier.
Default added (so using `tbp') on input line 212.
Default added (so using `tbp') on input line 219.
<./images/NA.png, id=214, 369.38pt x 118.4425pt>
<./images/NA.png, id=227, 369.38pt x 118.4425pt>
File: ./images/NA.png Graphic file (type png)
<use ./images/NA.png>
Package pdftex.def Info: ./images/NA.png used on input line 236.
Package pdftex.def Info: ./images/NA.png used on input line 243.
(pdftex.def) Requested size: 184.68954pt x 59.2211pt.
[5]
<./images/Applicable_E.png, id=225, 360.34625pt x 104.39pt>
[6 <./images/NA.png>]
<./images/Applicable_E.png, id=238, 360.34625pt x 104.39pt>
File: ./images/Applicable_E.png Graphic file (type png)
<use ./images/Applicable_E.png>
Package pdftex.def Info: ./images/Applicable_E.png used on input line 260.
Package pdftex.def Info: ./images/Applicable_E.png used on input line 267.
(pdftex.def) Requested size: 180.17268pt x 52.19485pt.
[6 <./images/NA.png> <./images/Applicable_E.png>]
Underfull \hbox (badness 2057) in paragraph at lines 273--275
Underfull \hbox (badness 2057) in paragraph at lines 280--282
[]\OT1/ptm/m/n/10 The database load parameter was changed based on
[]
Underfull \hbox (badness 7451) in paragraph at lines 293--294
Underfull \hbox (badness 7451) in paragraph at lines 300--301
\OT1/ptm/m/n/10 All nodes are connected with a 10Gbps Infiniband
[]
LaTeX Warning: Reference `sec:test-platform' on page 7 undefined on input line
299.
LaTeX Warning: Reference `sec:FW' on page 7 undefined on input line 303.
Underfull \hbox (badness 3713) in paragraph at lines 303--304
[7 <./images/Applicable_E.png>]
Underfull \hbox (badness 3713) in paragraph at lines 310--311
[]\OT1/ptm/m/n/10 In terms of efficiency, 2 compute nodes offer the
[]
<./images/Speedup-Esize-Tasking.png, id=245, 620.208pt x 321.93pt>
<./images/Speedup-Esize-Tasking.png, id=261, 620.208pt x 321.93pt>
File: ./images/Speedup-Esize-Tasking.png Graphic file (type png)
<use ./images/Speedup-Esize-Tasking.png>
Package pdftex.def Info: ./images/Speedup-Esize-Tasking.png used on input line
311.
318.
(pdftex.def) Requested size: 252.0pt x 130.80338pt.
<./images/Eff-Esize-Tasking.png, id=246, 620.208pt x 322.149pt>
<./images/Eff-Esize-Tasking.png, id=262, 620.208pt x 322.149pt>
File: ./images/Eff-Esize-Tasking.png Graphic file (type png)
<use ./images/Eff-Esize-Tasking.png>
Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 312
Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 319
.
(pdftex.def) Requested size: 252.0pt x 130.89236pt.
<./images/Tasking_RT.png, id=247, 860.46469pt x 257.96375pt>
<./images/Tasking_RT.png, id=263, 860.46469pt x 257.96375pt>
File: ./images/Tasking_RT.png Graphic file (type png)
<use ./images/Tasking_RT.png>
Package pdftex.def Info: ./images/Tasking_RT.png used on input line 319.
Package pdftex.def Info: ./images/Tasking_RT.png used on input line 326.
(pdftex.def) Requested size: 252.0pt x 75.54756pt.
<./images/Tasking_Spd.png, id=248, 860.46469pt x 276.53313pt>
<./images/Tasking_Spd.png, id=264, 860.46469pt x 276.53313pt>
File: ./images/Tasking_Spd.png Graphic file (type png)
<use ./images/Tasking_Spd.png>
Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 326.
Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 333.
(pdftex.def) Requested size: 252.0pt x 80.98582pt.
<./images/Tasking_Eff.png, id=249, 860.46469pt x 276.53313pt>
<./images/Tasking_Eff.png, id=265, 860.46469pt x 276.53313pt>
File: ./images/Tasking_Eff.png Graphic file (type png)
<use ./images/Tasking_Eff.png>
Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 333.
Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 340.
(pdftex.def) Requested size: 252.0pt x 80.98582pt.
(./Schrick-Noah_MPI-Tasking.bbl [7]
(./Schrick-Noah_MPI-Tasking.bbl
Underfull \vbox (badness 10000) 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> <./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
[]
@ -691,8 +680,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 110--114
\OT1/ptm/m/n/8 ``The Boost Graph Library, vers. 1.75.0.''
[]
[8 <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize-Tasking.png> <./ima
ges/Tasking_RT.png> <./images/Tasking_Spd.png> <./images/Tasking_Eff.png>])
)
** Conference Paper **
Before submitting the final camera ready copy, remember to:
@ -704,24 +692,19 @@ 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
] (./Schrick-Noah_MPI-Tasking.aux)
LaTeX Warning: There were undefined references.
[9] (./Schrick-Noah_MPI-Tasking.aux)
Package rerunfilecheck Info: File `Schrick-Noah_MPI-Tasking.out' has not change
d.
(rerunfilecheck) Checksum: 4585725CEAB08F9F367E9B263A126799;3322.
(rerunfilecheck) Checksum: 282EFB5F213C3BBCE81796BF27E429B0;3411.
)
Here is how much of TeX's memory you used:
12247 strings out of 476025
194754 string characters out of 5796533
1874388 words of memory out of 5000000
32446 multiletter control sequences out of 15000+600000
552034 words of font info for 106 fonts, out of 8000000 for 9000
12254 strings out of 476025
194956 string characters out of 5796533
1869388 words of memory out of 5000000
32452 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,589s stack positions out of 5000i,500n,10000p,200000b,80000s
75i,14n,76p,2022b,598s stack positions out of 5000i,500n,10000p,200000b,80000s
</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/
texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/font
s/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texmf-dist/fonts/type1/public/a
@ -729,10 +712,10 @@ msfonts/cm/cmsy10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cms
y7.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/share/texm
f-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/share/texmf-dist/fonts/type1/urw
/times/utmr8a.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmri8a.pfb>
Output written on Schrick-Noah_MPI-Tasking.pdf (9 pages, 1008332 bytes).
Output written on Schrick-Noah_MPI-Tasking.pdf (9 pages, 1044147 bytes).
PDF statistics:
330 PDF objects out of 1000 (max. 8388607)
278 compressed objects within 3 object streams
75 named destinations out of 1000 (max. 500000)
261 words of extra memory for PDF output out of 10000 (max. 10000000)
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)

View File

@ -21,5 +21,5 @@
\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}{}% 24
\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

Binary file not shown.

View File

@ -51,7 +51,7 @@ peter-hawrylak@utulsa.edu}
Attack Graph; Compliance Graph; MPI; High-Performance Computing; Cybersecurity; Compliance and Regulation; Speedup; Parallelism;
\end{IEEEkeywords}
\section{Introduction}
\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
@ -136,7 +136,7 @@ The underlying communication structure for the tasking approach relies on a pseu
\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.
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. Additional detail is 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.
\subsubsection{Task 1}
Task 1 begins by distributing the workload between nodes based on the local task communicator rank. Rather than splitting the exploit list at the root node and sending sub-lists to each node allocated to Task 1, each node checks its local communicator rank and performs a modulo operation with the number of nodes allocated to determine whether it should proceed with the current iteration of the exploit loop. Since the exploit list is static, each node has the exploit list initialized prior to the generation process, and communication cost can be avoided from sending sub-lists to each node. Each node in Task 1 works to compile a reduced exploit list that is applicable to the current network state. A breakdown of the Task 1 distribution can be seen in Figure \ref{fig:Task1-Data-Dist}.
@ -165,7 +165,14 @@ Once the computation work of Task 1 is completed, each node must send their comp
\end{figure}
\subsubsection{Task 2}
Each node in Task 2 iterates through the received partial applicable exploit list and creates new states with edges to the current state. However, synchronous firing work is performed during this task, and syncing multiple exploits that could be distributed across multiple nodes leads to additional overhead and complexity. To prevent these difficulties, each node checks its partial applicable exploit list for exploits that are part of a group, removes these exploits from its list, and sends the exploits belonging to a group to the Task 2 local communicator root. Since the Task 2 local root now contains all group exploits, it can execute the Synchronous Firing work without additional communication or synchronization between other MPI nodes in the Task 2 stage. Other than the additional setup steps required for Synchronous Firing for the local root, all work performed during this task by all MPI nodes is that seen from the Synchronous Firing figure (Figure \ref{fig:sync-fire}).
Each node in Task 2 iterates through the received partial applicable exploit list and creates new states with edges to the current state. Part of Task 2's workload is to handle a feature called synchronous firing. This feature allows for a grouping of assets. Rather than an exploit firing separately across all assets, synchronous firing allows for an exploit to fire one time, simultaneously across a group of assets. Syncing multiple exploits that could be distributed across multiple nodes leads to additional overhead and complexity. To prevent these difficulties, each node checks its partial applicable exploit list for exploits that are part of a group, removes these exploits from its list, and sends the exploits belonging to a group to the Task 2 local communicator root. Since the Task 2 local root now contains all group exploits, it can execute the synchronous firing work without additional communication or synchronization between other MPI nodes in the Task 2 stage. Other than the additional setup steps required for synchronous firing for the local root, all work performed during this task by all MPI nodes is that seen from the synchronous firing figure (Figure \ref{fig:sync-fire}).
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/Sync-Fire.png"}
\vspace{.2truein} \centerline{}
\caption{Program Flow of Synchronous Firing in Task 2}
\label{fig:sync-fire}
\end{figure}
\subsubsection{Task 3}
Task 3 is performed only by the root node, and no division of work is necessary. The root node will continuously check for new states until the Task 2 finalize signal is detected. This task consists of setting the new state's ID, adding it to the frontier, adding its information to the instance, and inserting information into the hash map. When the root node has processed all states and has received the Task 2 finalize signal, it will complete Task 3 by sending the instance and/or frontier to Task 4 and/or 5, respectively if applicable, then proceed to Task 0.
@ -204,7 +211,7 @@ To ensure that the intended message is received by each node, the MPI message en
\end{table}
\section{Performance Expectations and Use Cases} \label{sec:Task-perf-expec}
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.
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:Intro} also 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.
@ -263,7 +270,7 @@ The applicability of exploits was tested by using percentages of overall exploit
\label{fig:Appl-exp}
\end{figure}
\subsection{Database Load}
\subsection{Database Load} \label{sec:db-stor}
The database load parameter is a parameter passed to RAGE to determine when to offload data. The generation of large-scale attack and compliance graphs often faces challenges with scalability and state space explosion. For these large-scale graphs, as the generation process progresses, the resulting graph and the queue of unexplored states begins to consume too much memory for most systems, and the process either needs to offload the data or run the risk of its process being killed for constraints on memory consumption. Works by the authors of \cite{cook_rage_2018}, \cite{li_concurrency_2019}, and \cite{li_combining_2019} strive for maximum performance of the generation process, which involves making full use of system memory. Since network operations, database operations, and reading and writing from disks slows the generation, it is often preferred to store all data in memory. As a result, there is a balance between performance and system memory consumption.
RAGE has the option for automatically offloading to a PostgreSQL database based on its memory consumption. The database load parameter can either be a float between 0 and 1, or can be an integer greater than 1. If the parameter is a float, RAGE will automatically offload its graph instance or frontier if the memory consumed by either exceeds a percentage of total system memory corresponding to the float value. If the parameter is an integer greater than 1, RAGE wil automatically offload its graph instance or frontier if the number of items in either is greater than the parameter value.
@ -273,15 +280,15 @@ Since the goal of the stress tests is to generate identical graphs for all tests
The database load parameter was changed based on percentage of the total resulting graph size, as follows:
\begin{itemize}
\item{0\% Load (Do not ever write to the database) - DBLoad = 395}
\item{25\% Load (Write to the database when 25\% of the total resulting graph size is in memory) - DBLoad = 79}
\item{25\% Load (Write to the database when 25\% of the total resulting graph size is in memory) - DBLoad = 296}
\item{50\% Load (Write to the database when 50\% of the total resulting graph size is in memory) - DBLoad = 197}
\item{75\% Load (Write to the database when 75\% of the total resulting graph size is in memory) - DBLoad = 296}
\item{75\% Load (Write to the database when 75\% of the total resulting graph size is in memory) - DBLoad = 79}
\item{100\% Load (Write to the database on every new state) - DBLoad = 1}
\end{itemize}
The database load parameter stresses Tasks 0, 4, and 5. Task 4 will be stressed on all load parameters, except for when the load is 0\% (size 395), which serves as the control. Task 4 will experience the greatest stress when the load parameter is 100\% (size 1), since as soon as new states are discovered in previous tasks, Task 4 will begin. Task 0 and Task 5 will experience stress at the same intervals. When the queue of unexplored states increases to a size greater than the load parameter, Task 5 will empty the queue, and Task 0 will be forced to pull new states from the database.
\subsection{Testing Platform}
\subsection{Testing Platform} \label{sec:test-platform}
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}
@ -337,7 +344,7 @@ Figures \ref{fig:Tasking-RT}, \ref{fig:Tasking-Spd}, and \ref{fig:Tasking-Eff} d
\section{Analysis}
\section{Conclusion}
\section{Conclusion and Future Work} \label{sec:FW}
%\bibliographyp
\bibliography{Bibliography}

BIN
images/Sync-Fire.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB