Altering data sheet to account for new variables

This commit is contained in:
Noah L. Schrick 2022-09-13 20:31:55 -05:00
parent fdd364dc0a
commit fbcda31094
24 changed files with 2399 additions and 0 deletions

1284
Bibliography.bib Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
,noah,NovaArchSys,13.09.2022 20:30,file:///home/noah/.config/libreoffice/4;

Binary file not shown.

View File

@ -0,0 +1,83 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\citation{pacheco_introduction_2011}
\citation{li_concurrency_2019}
\citation{9150145}
\citation{7087377}
\babel@aux{nil}{}
\@writefile{toc}{\contentsline {section}{\numberline {I}Introduction}{1}{section.1}\protected@file@percent }
\@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 {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{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{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{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{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 {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 }
\newlabel{fig:Tasking-RT}{{8}{5}{MPI Tasking Approach Runtime Results}{figure.8}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{5}{figure.9}\protected@file@percent }
\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}

View File

@ -0,0 +1,22 @@
\begin{thebibliography}{1}
\bibitem{pacheco_introduction_2011}
P.~Pacheco, {\em An {Introduction} to {Parallel} {Programming}}.
\newblock Morgan Kaufmann, print~ed., 2011.
\bibitem{li_concurrency_2019}
M.~Li, P.~Hawrylak, and J.~Hale, ``Concurrency {Strategies} for {Attack}
{Graph} {Generation},'' {\em Proceedings - 2019 2nd International Conference
on Data Intelligence and Security, ICDIS 2019}, pp.~174--179, 2019.
\bibitem{9150145}
M.~Li, P.~J. Hawrylak, and J.~Hale, ``Implementing an attack graph generator in
cuda,'' in {\em 2020 IEEE International Parallel and Distributed Processing
Symposium Workshops (IPDPSW)}, pp.~730--738, 2020.
\bibitem{7087377}
K.~Kaynar and F.~Sivrikaya, ``Distributed attack graph generation,'' {\em IEEE
Transactions on Dependable and Secure Computing}, vol.~13, no.~5,
pp.~519--532, 2016.
\end{thebibliography}

View File

@ -0,0 +1,46 @@
This is BibTeX, Version 0.99d (TeX Live 2022/Arch Linux)
Capacity: max_strings=200000, hash_size=200000, hash_prime=170003
The top-level auxiliary file: Schrick-Noah_MPI-Tasking.aux
The style file: ieeetr.bst
Database file #1: Bibliography.bib
You've used 4 entries,
1876 wiz_defined-function locations,
502 strings with 4183 characters,
and the built_in function-call counts, 1180 in all, are:
= -- 119
> -- 34
< -- 0
+ -- 13
- -- 9
* -- 75
:= -- 162
add.period$ -- 5
call.type$ -- 4
change.case$ -- 4
chr.to.int$ -- 0
cite$ -- 4
duplicate$ -- 64
empty$ -- 118
format.name$ -- 9
if$ -- 296
int.to.chr$ -- 0
int.to.str$ -- 4
missing$ -- 5
newline$ -- 16
num.names$ -- 4
pop$ -- 16
preamble$ -- 1
purify$ -- 0
quote$ -- 0
skip$ -- 45
stack$ -- 0
substring$ -- 88
swap$ -- 28
text.length$ -- 0
text.prefix$ -- 0
top$ -- 0
type$ -- 0
warning$ -- 0
while$ -- 11
width$ -- 5
write$ -- 41

View File

@ -0,0 +1,670 @@
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
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**Schrick-Noah_MPI-Tasking.tex
(./Schrick-Noah_MPI-Tasking.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-04-10>
(/usr/share/texmf-dist/tex/latex/ieeetran/IEEEtran.cls
Document Class: IEEEtran 2015/08/26 V1.8b by Michael Shell
-- See the "IEEEtran_HOWTO" manual for usage information.
-- http://www.michaelshell.org/tex/ieeetran/
\@IEEEtrantmpdimenA=\dimen138
\@IEEEtrantmpdimenB=\dimen139
\@IEEEtrantmpdimenC=\dimen140
\@IEEEtrantmpcountA=\count185
\@IEEEtrantmpcountB=\count186
\@IEEEtrantmpcountC=\count187
\@IEEEtrantmptoksA=\toks16
LaTeX Font Info: Trying to load font information for OT1+ptm on input line 5
03.
(/usr/share/texmf-dist/tex/latex/psnfss/ot1ptm.fd
File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm.
)
-- Using 8.5in x 11in (letter) paper.
-- Using PDF output.
\@IEEEnormalsizeunitybaselineskip=\dimen141
-- This is a 10 point document.
\CLASSINFOnormalsizebaselineskip=\dimen142
\CLASSINFOnormalsizeunitybaselineskip=\dimen143
\IEEEnormaljot=\dimen144
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <5> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <5> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <7> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <7> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <8> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <8> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <9> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <9> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <10> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <10> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <11> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <11> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <12> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <12> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <17> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <17> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <20> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <20> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <24> not available
(Font) Font shape `OT1/ptm/b/n' tried instead on input line 1090.
LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <24> not available
(Font) Font shape `OT1/ptm/b/it' tried instead on input line 1090.
\IEEEquantizedlength=\dimen145
\IEEEquantizedlengthdiff=\dimen146
\IEEEquantizedtextheightdiff=\dimen147
\IEEEilabelindentA=\dimen148
\IEEEilabelindentB=\dimen149
\IEEEilabelindent=\dimen150
\IEEEelabelindent=\dimen151
\IEEEdlabelindent=\dimen152
\IEEElabelindent=\dimen153
\IEEEiednormlabelsep=\dimen154
\IEEEiedmathlabelsep=\dimen155
\IEEEiedtopsep=\skip47
\c@section=\count188
\c@subsection=\count189
\c@subsubsection=\count190
\c@paragraph=\count191
\c@IEEEsubequation=\count192
\abovecaptionskip=\skip48
\belowcaptionskip=\skip49
\c@figure=\count193
\c@table=\count194
\@IEEEeqnnumcols=\count195
\@IEEEeqncolcnt=\count196
\@IEEEsubeqnnumrollback=\count197
\@IEEEquantizeheightA=\dimen156
\@IEEEquantizeheightB=\dimen157
\@IEEEquantizeheightC=\dimen158
\@IEEEquantizeprevdepth=\dimen159
\@IEEEquantizemultiple=\count198
\@IEEEquantizeboxA=\box50
\@IEEEtmpitemindent=\dimen160
\IEEEPARstartletwidth=\dimen161
\c@IEEEbiography=\count199
\@IEEEtranrubishbin=\box51
)
** ATTENTION: Overriding command lockouts (line 2).
(/usr/share/texmf-dist/tex/latex/cite/cite.sty
LaTeX Info: Redefining \cite on input line 302.
LaTeX Info: Redefining \nocite on input line 332.
Package: cite 2015/02/27 v 5.5
)
(/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2021/10/15 v2.17l AMS math features
\@mathmargin=\skip50
For additional information on amsmath, use the `?' option.
(/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2021/08/26 v2.01 AMS text
(/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks17
\ex@=\dimen162
))
(/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen163
)
(/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2021/08/26 v2.02 operator names
)
\inf@bad=\count266
LaTeX Info: Redefining \frac on input line 234.
\uproot@=\count267
\leftroot@=\count268
LaTeX Info: Redefining \overline on input line 399.
\classnum@=\count269
\DOTSCASE@=\count270
LaTeX Info: Redefining \ldots on input line 496.
LaTeX Info: Redefining \dots on input line 499.
LaTeX Info: Redefining \cdots on input line 620.
\Mathstrutbox@=\box52
\strutbox@=\box53
\big@size=\dimen164
LaTeX Font Info: Redeclaring font encoding OML on input line 743.
LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
\macc@depth=\count271
\c@MaxMatrixCols=\count272
\dotsspace@=\muskip16
\c@parentequation=\count273
\dspbrk@lvl=\count274
\tag@help=\toks18
\row@=\count275
\column@=\count276
\maxfields@=\count277
\andhelp@=\toks19
\eqnshift@=\dimen165
\alignsep@=\dimen166
\tagshift@=\dimen167
\tagwidth@=\dimen168
\totwidth@=\dimen169
\lineht@=\dimen170
\@envbody=\toks20
\multlinegap=\skip51
\multlinetaggap=\skip52
\mathdisplay@stack=\toks21
LaTeX Info: Redefining \[ on input line 2938.
LaTeX Info: Redefining \] on input line 2939.
)
(/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
(/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
))
(/usr/share/texmf-dist/tex/latex/algorithms/algorithmic.sty
Package: algorithmic 2009/08/24 v0.1 Document Style `algorithmic'
(/usr/share/texmf-dist/tex/latex/base/ifthen.sty
Package: ifthen 2020/11/24 v1.1c Standard LaTeX ifthen package (DPC)
)
(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks22
)
\c@ALC@unique=\count278
\c@ALC@line=\count279
\c@ALC@rem=\count280
\c@ALC@depth=\count281
\ALC@tlm=\skip53
\algorithmicindent=\skip54
)
(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
)
(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 107.
(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen171
\Gin@req@width=\dimen172
)
(/usr/share/texmf-dist/tex/generic/babel/babel.sty
Package: babel 2022/02/26 3.73 The Babel package
\babel@savecnt=\count282
\U@D=\dimen173
\l@unhyphenated=\language87
(/usr/share/texmf-dist/tex/generic/babel/txtbabel.def)
\bbl@readstream=\read2
\bbl@dirlevel=\count283
Package babel Info: You haven't specified a language. I'll use 'nil'
(babel) as the main language. Reported on input line 4305.
(/usr/share/texmf-dist/tex/generic/babel/nil.ldf
Language: nil 2022/02/26 3.73 Nil language
\l@nil=\language88
))
(/usr/share/texmf-dist/tex/latex/base/textcomp.sty
Package: textcomp 2020/02/02 v2.0n Standard LaTeX package
)
(/usr/share/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2021/02/14 v1.3d Input encoding file
\inpenc@prehook=\toks23
\inpenc@posthook=\toks24
)
(/usr/share/texmf-dist/tex/latex/float/float.sty
Package: float 2001/11/08 v1.3d Float enhancements (AL)
\c@float@type=\count284
\float@exts=\toks25
\float@box=\box54
\@float@everytoks=\toks26
\@floatcapt=\box55
)
(/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
Package: xcolor 2021/10/31 v2.13 LaTeX color extensions (UK)
(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
File: color.cfg 2016/01/02 v1.6 sample color configuration
)
Package xcolor Info: Driver file: pdftex.def on input line 227.
Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1352.
Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1356.
Package xcolor Info: Model `RGB' extended on input line 1368.
Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1370.
Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1371.
Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1372.
Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1373.
Package xcolor Info: Model `Gray' substituted by `gray' on input line 1374.
Package xcolor Info: Model `wave' substituted by `hsb' on input line 1375.
)
(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2022-02-21 v7.00n Hypertext links for LaTeX
(/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
)
(/usr/share/texmf-dist/tex/generic/iftex/iftex.sty
Package: iftex 2022/02/03 v1.0f TeX engine tests
)
(/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO
)
(/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
)
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode found.
)
(/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
)
(/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
)
(/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
)
(/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
)
(/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
)
(/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
)
(/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO)
)
\@linkdim=\dimen174
\Hy@linkcounter=\count285
\Hy@pagecounter=\count286
(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2022-02-21 v7.00n Hyperref: PDFDocEncoding definition (HO)
Now handling font encoding PD1 ...
... no UTF-8 mapping file for font encoding PD1
)
(/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
)
(/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
)
\Hy@SavedSpaceFactor=\count287
(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
File: puenc.def 2022-02-21 v7.00n Hyperref: PDF Unicode definition (HO)
Now handling font encoding PU ...
... no UTF-8 mapping file for font encoding PU
)
Package hyperref Info: Hyper figures OFF on input line 4137.
Package hyperref Info: Link nesting OFF on input line 4142.
Package hyperref Info: Hyper index ON on input line 4145.
Package hyperref Info: Plain pages OFF on input line 4152.
Package hyperref Info: Backreferencing OFF on input line 4157.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4390.
\c@Hy@tempcnt=\count288
(/usr/share/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip17
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 4749.
\XeTeXLinkMargin=\dimen175
(/usr/share/texmf-dist/tex/generic/bitset/bitset.sty
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
(/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO
)
))
\Fld@menulength=\count289
\Field@Width=\dimen176
\Fld@charsize=\dimen177
Package hyperref Info: Hyper figures OFF on input line 6027.
Package hyperref Info: Link nesting OFF on input line 6032.
Package hyperref Info: Hyper index ON on input line 6035.
Package hyperref Info: backreferencing OFF on input line 6042.
Package hyperref Info: Link coloring OFF on input line 6047.
Package hyperref Info: Link coloring with OCG OFF on input line 6052.
Package hyperref Info: PDF/A mode OFF on input line 6057.
LaTeX Info: Redefining \ref on input line 6097.
LaTeX Info: Redefining \pageref on input line 6101.
(/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi
package with kernel methods
)
\Hy@abspage=\count290
\c@Item=\count291
\c@Hfootnote=\count292
)
Package hyperref Info: Driver (autodetected): hpdftex.
(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
File: hpdftex.def 2022-02-21 v7.00n Hyperref driver for pdfTeX
(/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac
kage
with kernel methods
)
\Fld@listcount=\count293
\c@bookmark@seq@number=\count294
(/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
(/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
86.
)
\Hy@SectionHShift=\skip55
)
Package hyperref Info: Option `colorlinks' set `true' on input line 24.
(/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2022-04-14 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count295
\l__pdf_internal_box=\box56
)
(./Schrick-Noah_MPI-Tasking.aux)
\openout1 = `Schrick-Noah_MPI-Tasking.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 26.
LaTeX Font Info: ... okay on input line 26.
-- Lines per column: 56 (exact).
(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count296
\scratchdimen=\dimen178
\scratchbox=\box57
\nofMPsegments=\count297
\nofMParguments=\count298
\everyMPshowfont=\toks27
\MPscratchCnt=\count299
\MPscratchDim=\dimen179
\MPnumerator=\count300
\makeMPintoPDFobject=\count301
\everyMPtoPDFconversion=\toks28
) (/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
85.
(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
Package hyperref Info: Link coloring ON on input line 26.
(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section
(/usr/share/texmf-dist/tex/latex/refcount/refcount.sty
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
)
(/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count302
)
LaTeX Info: Redefining \ref on input line 26.
LaTeX Info: Redefining \pageref on input line 26.
LaTeX Info: Redefining \nameref on input line 26.
(./Schrick-Noah_MPI-Tasking.out) (./Schrick-Noah_MPI-Tasking.out)
\@outlinefile=\write3
\openout3 = `Schrick-Noah_MPI-Tasking.out'.
Underfull \hbox (badness 2318) in paragraph at lines 50--52
[]\OT1/ptm/b/it/9 Index Terms\OT1/ptm/b/n/9 ---Attack Graph; Compliance Graph;
MPI;
[]
LaTeX Warning: Reference `sec:gen_improv' on page 1 undefined on input line 57.
LaTeX Warning: Reference `sec:related_works' on page 1 undefined on input line
57.
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>
File: ./images/horiz_task.drawio.png Graphic file (type png)
<use ./images/horiz_task.drawio.png>
Package pdftex.def Info: ./images/horiz_task.drawio.png used on input line 94.
(pdftex.def) Requested size: 252.0pt x 167.64183pt.
LaTeX Font Info: Trying to load font information for U+msa on input line 101
.
(/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
.
(/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}
]
<./images/node-alloc.png, id=115, 818.30719pt x 536.75531pt>
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 106.
(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
[]
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>
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 122.
(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>
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 131.
(pdftex.def) Requested size: 252.0pt x 145.89163pt.
<./images/Task1-Case2.png, id=132, 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 138.
(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 `sec:db-stor' on page 3 undefined on input line 151.
[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.
LaTeX Warning: Reference `sec:Intro' on page 4 undefined on input line 184.
LaTeX Warning: Reference `sec:CG-diff' on page 4 undefined on input line 184.
LaTeX Warning: No positions in optional float specifier.
Default added (so using `tbp') on input line 187.
Underfull \hbox (badness 5022) in paragraph at lines 210--212
[]\OT1/ptm/m/n/10 Looping through MPI Nodes, Number of Exploits,
[]
LaTeX Warning: Reference `sec:test-platform' on page 4 undefined on input line
214.
LaTeX Warning: Reference `sec:FW' on page 4 undefined on input line 218.
Underfull \hbox (badness 3713) in paragraph at lines 218--219
[]\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>
File: ./images/NA.png Graphic file (type png)
<use ./images/NA.png>
Package pdftex.def Info: ./images/NA.png used on input line 224.
(pdftex.def) Requested size: 184.68954pt x 59.2211pt.
<./images/Speedup-Esize-Tasking.png, id=160, 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
232.
(pdftex.def) Requested size: 252.0pt x 130.80338pt.
<./images/Eff-Esize-Tasking.png, id=161, 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 233
.
(pdftex.def) Requested size: 252.0pt x 130.89236pt.
<./images/Tasking_RT.png, id=162, 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 240.
(pdftex.def) Requested size: 252.0pt x 75.54756pt.
<./images/Tasking_Spd.png, id=163, 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 247.
(pdftex.def) Requested size: 252.0pt x 80.98582pt.
<./images/Tasking_Eff.png, id=164, 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 254.
(pdftex.def) Requested size: 252.0pt x 80.98582pt.
(./Schrick-Noah_MPI-Tasking.bbl)
** Conference Paper **
Before submitting the final camera ready copy, remember to:
1. Manually equalize the lengths of two columns on the last page
of your paper;
2. Ensure that any PostScript and/or PDF output post-processing
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)
LaTeX Warning: There were undefined references.
Package rerunfilecheck Info: File `Schrick-Noah_MPI-Tasking.out' has not change
d.
(rerunfilecheck) Checksum: 90D683B99C078EF678C75764E234217B;2767.
)
Here is how much of TeX's memory you used:
12097 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
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
{/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texmf-dist/fon
ts/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texmf-dist/fonts/type1/urw/tim
es/utmb8a.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/sh
are/texmf-dist/fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-dist/fonts/ty
pe1/urw/times/utmri8a.pfb>
Output written on Schrick-Noah_MPI-Tasking.pdf (5 pages, 947484 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)

View File

@ -0,0 +1,22 @@
\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
\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 [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

Binary file not shown.

View File

@ -0,0 +1,271 @@
\documentclass[conference]{IEEEtran}
\IEEEoverridecommandlockouts
% The preceding line is only needed to identify funding in the first footnote. If that is unneeded, please comment it out.
\usepackage{cite}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{algorithmic}
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage{babel} % Bibliography
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage{float}
\usepackage{xcolor}
\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\usepackage[hidelinks]{hyperref} % Clickable TOC Links
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=black,
urlcolor=black
}
\begin{document}
\title{Parallelization of Large-Scale Attack and Compliance Graph Generation Using Message-Passing Interface
}
\author{\IEEEauthorblockN{Noah L. Schrick}
\IEEEauthorblockA{\textit{Tandy School of Computer Science} \\
\textit{The University of Tulsa}\\
Tulsa, USA \\
noah-schrick@utulsa.edu}
\and
\IEEEauthorblockN{Peter J. Hawrylak}
\IEEEauthorblockA{\textit{Tandy School of Computer Science} \\
\textit{The University of Tulsa}\\
Tulsa, USA \\
peter-hawrylak@utulsa.edu}
}
\maketitle
\begin{abstract}
\end{abstract}
\begin{IEEEkeywords}
Attack Graph; Compliance Graph; MPI; High-Performance Computing; Cybersecurity; Compliance and Regulation; Speedup; Parallelism;
\end{IEEEkeywords}
\section{Introduction}
\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.
\section{Necessary Components}
\subsection{Serialization}
In order to distribute workloads across nodes in a distributed system, various
types of data will need to be sent and received. Support and mechanisms vary based
on the MPI implementation, but most fundamental data types such as integers, doubles,
characters, and Booleans are incorporated into the MPI implementation. While this does
simplify some of the messages that need to be sent and received in the MPI approaches of
attack and compliance graph generation, it does not cover the vast majority of them when using RAGE.
RAGE implements many custom classes and structs that are used throughout the generation process.
Qualities, topologies, network states, and exploits are a few such examples. Rather than breaking
each of these down into fundamental types manually, serialization functions are leveraged to handle
most of this. RAGE already incorporates Boost graph libraries for auxiliary support, so this work
extended this further to utilize the serialization libraries also provided by Boost. These
libraries also include support for serializing all STL classes, and many of the RAGE
classes have members that make use of the STL classes. One additional advantage of the Boost
library approach is that many of the RAGE classes are nested. For example, the NetworkState
class has a member vector of Quality classes, and the Quality class has a Keyvalue class as a member. When serializing the NetworkState class, Boost will
recursively serialize all members, including the custom class members, assuming they also have
serialization functions.
When using the serialization libraries, this work opted to use the intrusive route, where the
class instances are altered directly. This was preferable to the non-intrusive approach, since
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}
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
OpenMP, CUDA, and hyper-graph partitioning. This approach, however, utilizes Message Passing Interface (MPI)
to distribute the six identified tasks of RAGE to examine the effect on speedup, efficiency, and scalability for
attack and compliance graph generation.
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/horiz_task.drawio.png"}
\vspace{.2truein} \centerline{}
\caption{Task Overview of the Attack and Compliance Graph Generation Process}
\label{fig:tasks}
\end{figure}
\subsection{Algorithm Design}
The design of the tasking approach is to leverage a pipeline structure with the six tasks and MPI nodes. After its completion, each stage of the pipeline will pass the necessary data to the next stage through various MPI messages, where the next stage's nodes will receive the data and execute their tasks. The pipeline is considered fully saturated when each task has a dedicated node solely for executing work for that task. When there are less nodes than tasks, some nodes will process multiple tasks. When there are more nodes than tasks, additional nodes will be assigned to Tasks 1 and 2. Timings were collected in the serial approach for various networks that displayed more time requirements for Tasks 1 and 2, with larger network sizes requiring vastly more time to be taken in Tasks 1 and 2. As a result, additional nodes are assigned to Tasks 1 and 2. Node allocation can be seen in Figure \ref{fig:node-alloc}. In this Figure, ``world.size()" is an integer value representing the number of nodes used in the program, and ``num$\_$tasks" is an integer value representing the number of tasks used in the pipeline. By using a variable for the number of tasks, it allows for modular usage of the pipeline, where tasks can be added and removed without needing to change any allocation logic work; only communication between tasks may need to be modified, and the allocation can be adjusted relatively simply to include new tasks.
For determining which tasks should be handled by the root note, a few considerations were made, where minimizing communication cost and avoiding unnecessary complexity were the main two considerations. In the serial approach, the frontier queue was the primary data structure for the majority of the generation process. Rather than using a distributed queue or passing multiple sub-queues between nodes, the minimum cost option is to pass states individually. This approach also assists in reducing the complexity. Managing multiple frontier queues would require duplication checks, multiple nodes requesting data from and storing data into the database, and devising a strategy to maintain proper queue ordering, all of which would also increase the communication cost. As a result, the root node will be dedicated to Tasks 0 and 3.
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/node-alloc.png"}
\vspace{.2truein} \centerline{}
\caption{Node Allocation for each Task}
\label{fig:node-alloc}
\end{figure}
\subsubsection{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.
\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.
\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}.
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/Task1-Data-Dist.png"}
\vspace{.2truein} \centerline{}
\caption{Data Distribution of Task One}
\label{fig:Task1-Data-Dist}
\end{figure}
Once the computation work of Task 1 is completed, each node must send their compiled applicable exploit list to Task 2. Rather than merging all lists and splitting them back out in Task 2, each node in Task 1 will send an applicable exploit list to at most one node allocated to Task 2. Based on the allocation of nodes seen in Figure \ref{fig:node-alloc}, there are 2 potential cases: the number of nodes allocated to Task 1 is equal to the number of nodes allocated to Task 2, or the number of nodes allocated to Task 1 is one greater than the number of nodes allocated to Task 2. For the first case, each node in Task 1 sends the applicable exploit list to its global rank+n$_1$. This case can be seen in Figure \ref{fig:Task1-Case1}. For the second case, since there are more nodes allocated to Task 1 than Task 2, node n$_1$ scatters its partial applicable exploit list in the local Task 1 communicator, and all other Task 1 nodes follow the same pattern seen in the first case. This second case can be seen in Figure \ref{fig:Task1-Case2}.
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/Task1-Case1.png"}
\vspace{.2truein} \centerline{}
\caption{Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}
\label{fig:Task1-Case1}
\end{figure}
\begin{figure}[htp]
\includegraphics[width=\linewidth]{"./images/Task1-Case2.png"}
\vspace{.2truein} \centerline{}
\caption[Task 1 to Task 2 Communication, Case 2]{Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated}
\label{fig:Task1-Case2}
\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}).
\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.
\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}
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}[]
\centering
\begin{tabular}{|c|c|}
\hline
\textbf{Tag} & \textbf{Description} \\ \hline
2 & Task 2 Finalize Signal \\ \hline
3 & Fact for Hash Map Update \\ \hline
4 & NetworkState for Hash Map Update \\ \hline
5 & NetworkState to be Added to the Frontier \\ \hline
6 & Current NetworkState Reference for Edge Creation \\ \hline
7 & Factbases for Task 4 \\ \hline
8 & Edges for Task 4 \\ \hline
9 & Group Exploit Vectors for Local Root in Task 2 \\ \hline
10 & Exploit Reference for Task 3 Work \\ \hline
11 & AssetGroup Reference for Task 3 Work \\ \hline
14 & Continue Signal \\ \hline
15 & Finalize Signal \\ \hline
20 & Current NetworkState Reference for Task 1 \\ \hline
21 & Applicable Exploit Vector Scatter for Task 1 Case 2 \\ \hline
30 & Applicable Exploit Vector Send to Task 2 \\ \hline
40 & NetworkState Send to Task 2 \\ \hline
50 & NetworkState to Store in Task 5 \\ \hline
\end{tabular}
\caption{MPI Tags for the MPI Tasking Approach}
\label{table:tasking-tag}
\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.
\section{Experimental Setup}
\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
\end{tabular}
\caption{Task Descriptions and Performance Notes}
\label{table:tasking-gen-perf}
\end{table}
\subsection{Number 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
\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.
The results of the Tasking Approach can be seen in Figure \ref{fig:Spd-Eff-Task}. In terms of speedup, when the number of entries in the exploit list is small, the serial approach has better performance. This is expected due to the communication cost requiring more time than it does to generate a state, as discussed in Section \ref{sec:Task-perf-expec}. 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.
In terms of efficiency, 2 compute nodes offer the greatest value since the speedup using 2 compute nodes is approximately 1.0 as the exploit list size increases. While the 2 compute node option 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. In the testing conducted, Task 1 was responsible for iterating through an increased size of the exploit list, so more nodes is advantageous in distributing the workload. However, since many exploits were not applicable, Task 2 had a lower workload where only 6 exploits could be applicable. This will be further elaborated upon in Section \ref{sec:FW}, but it is expected that efficiency will increase for real networks, since nodes in Task 2 will see a realistic workload.
Figures \ref{fig:Tasking-RT}, \ref{fig:Tasking-Spd}, and \ref{fig:Tasking-Eff} display the results of the tasking approach for runtime in milliseconds, speedup, and efficiency respectively in table format.
\begin{figure}[htp]
\centering
\includegraphics[scale=0.5]{"./images/NA.png"}
\vspace{.2truein} \centerline{}
\caption{Example of a Not Applicable Exploit for the MPI Tasking Testing}
\label{fig:NA-exp}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{"./images/Speedup-Esize-Tasking.png"}
\includegraphics[width=\linewidth]{"./images/Eff-Esize-Tasking.png"}
\caption{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}
\label{fig:Spd-Eff-Task}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{"./images/Tasking_RT.png"}
\caption[MPI Tasking Approach Runtime Results]{Results for the MPI Tasking Approach in Terms of Runtime in Milliseconds}
\label{fig:Tasking-RT}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{"./images/Tasking_Spd.png"}
\caption{Results for the MPI Tasking Approach in Terms of Speedup}
\label{fig:Tasking-Spd}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\linewidth]{"./images/Tasking_Eff.png"}
\caption{Results for the MPI Tasking Approach in Terms of Efficiency}
\label{fig:Tasking-Eff}
\end{figure}
\section{Analysis}
\section{Conclusion}
\section*{Acknowledgment}
\section*{References}
%\bibliographyp
\bibliography{Bibliography}
\bibliographystyle{ieeetr}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
images/MPI-OpenMP-Blend.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
images/NA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
images/RAGE_Chart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
images/RAGE_Flowchart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

BIN
images/Task1-Case1.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
images/Task1-Case2.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/Task1-Data-Dist.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
images/Tasking_Eff.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
images/Tasking_RT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
images/Tasking_Spd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
images/node-alloc.PNG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB