diff --git a/Appendices.aux b/Appendices.aux index 0dde366..65224a7 100644 --- a/Appendices.aux +++ b/Appendices.aux @@ -1,13 +1,13 @@ \relax -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{37}{}\protected@file@percent } -\newlabel{App:A}{{A}{37}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{38}{}\protected@file@percent } -\newlabel{App:B}{{B}{38}} -\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{38}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{38}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{38}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{39}{}\protected@file@percent } +\newlabel{App:A}{{A}{39}} +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{40}{}\protected@file@percent } +\newlabel{App:B}{{B}{40}} +\@writefile{toc}{\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{40}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{A Sub-subsection in an Appendix}{40}{}\protected@file@percent } \@setckpt{Appendices}{ -\setcounter{page}{39} +\setcounter{page}{41} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter5.aux b/Chapter5.aux index 3694a47..873f571 100644 --- a/Chapter5.aux +++ b/Chapter5.aux @@ -12,27 +12,33 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{26}{}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{27}{}\protected@file@percent } \newlabel{fig:tasks}{{5.1}{27}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{28}{}\protected@file@percent } +\newlabel{fig:node-alloc}{{5.2}{28}} \@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{28}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Zero}{28}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task One}{28}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Two}{28}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Three}{28}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Task Four and Task Five}{28}{}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{29}{}\protected@file@percent } -\newlabel{fig:node-alloc}{{5.2}{29}} -\@writefile{toc}{\contentsline {subsubsection}{MPI Tags}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}\it Results}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Root Node}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{Database Node}{30}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{30}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 0}{29}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 1}{29}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One}}{29}{}\protected@file@percent } +\newlabel{fig:Task1-Data-Dist}{{5.3}{29}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}}{30}{}\protected@file@percent } +\newlabel{fig:Task1-Case1}{{5.4}{30}} +\@writefile{toc}{\contentsline {subsubsection}{Task 2}{30}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated}}{31}{}\protected@file@percent } +\newlabel{fig:Task1-Case2}{{5.5}{31}} +\@writefile{toc}{\contentsline {subsubsection}{Task 3}{31}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Task 4 and Task 5}{31}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{MPI Tags}{31}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.4}\it Results}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Communication Structure}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Worker Nodes}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Root Node}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{Database Node}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{32}{}\protected@file@percent } \@setckpt{Chapter5}{ -\setcounter{page}{31} +\setcounter{page}{33} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} @@ -47,7 +53,7 @@ \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} -\setcounter{figure}{2} +\setcounter{figure}{5} \setcounter{table}{0} \setcounter{lofdepth}{1} \setcounter{lotdepth}{1} diff --git a/Chapter5.tex b/Chapter5.tex index 6b8b2ad..fb7cfe7 100644 --- a/Chapter5.tex +++ b/Chapter5.tex @@ -59,14 +59,40 @@ For determining which tasks should be handled by the root note, a few considerat \TUsubsubsection{Communication Structure} -\TUsubsubsection{Task Zero} -Task Zero is performed by the root node, and is a conditional task; it is not guaranteed to be executed at each pipeline iteration. Task Zero 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. -\TUsubsubsection{Task One} -\TUsubsubsection{Task Two} -\TUsubsubsection{Task Three} -Task Three is performed only by the root node, and no division of work is necessary. The work performed during this task is that seen in Figure \ref{fig:sync-fire}. -\TUsubsubsection{Task Four and Task Five} -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. 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 no other task relies on data sent from these tasks. 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. +\TUsubsubsection{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. +\TUsubsubsection{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]{"./Chapter5_img/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]{"./Chapter5_img/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]{"./Chapter5_img/Task1-Case2.png"} + \vspace{.2truein} \centerline{} + \caption{Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated} + \label{fig:Task1-Case2} +\end{figure} + +\TUsubsubsection{Task 2} +\TUsubsubsection{Task 3} +Task 3 is performed only by the root node, and no division of work is necessary. The work performed during this task is that seen from the Synchronous Firing figure (Figure \ref{fig:sync-fire}). The root node will continuously check for new states until the Task 2 finalize signal is detected. 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 proceeds to Task 0. +\TUsubsubsection{Task 4 and Task 5} +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. 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. \TUsubsubsection{MPI Tags} \TUsubsection{Performance Expectations} diff --git a/Chapter5_img/Task1-Case1.PNG b/Chapter5_img/Task1-Case1.PNG index 56d575d..40eec00 100644 Binary files a/Chapter5_img/Task1-Case1.PNG and b/Chapter5_img/Task1-Case1.PNG differ diff --git a/Chapter5_img/Task1-Case2.PNG b/Chapter5_img/Task1-Case2.PNG index 8fe298c..2309a0c 100644 Binary files a/Chapter5_img/Task1-Case2.PNG and b/Chapter5_img/Task1-Case2.PNG differ diff --git a/Chapter6.aux b/Chapter6.aux index c96d91c..84ceee7 100644 --- a/Chapter6.aux +++ b/Chapter6.aux @@ -1,23 +1,23 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{31}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{32}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{32}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{32}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Small Networks}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}\it Results}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Large Networks}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}\it Results}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}\it Results}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{34}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}\it Results}{34}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{34}{}\protected@file@percent } \@setckpt{Chapter6}{ -\setcounter{page}{33} +\setcounter{page}{35} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Chapter7.aux b/Chapter7.aux index d6dfc03..0074278 100644 --- a/Chapter7.aux +++ b/Chapter7.aux @@ -1,8 +1,8 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{33}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{33}{}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{35}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7.1}\bf Future Work}{35}{}\protected@file@percent } \@setckpt{Chapter7}{ -\setcounter{page}{34} +\setcounter{page}{36} \setcounter{equation}{0} \setcounter{enumi}{4} \setcounter{enumii}{0} diff --git a/Schrick-Noah_MS-Thesis.aux b/Schrick-Noah_MS-Thesis.aux index 513d69c..7612c8e 100644 --- a/Schrick-Noah_MS-Thesis.aux +++ b/Schrick-Noah_MS-Thesis.aux @@ -32,9 +32,9 @@ \bibcite{cook_rage_2018}{9} \bibcite{cook_scalable_2016}{10} \@writefile{toc}{{\hfill \ }} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{34}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{36}{}\protected@file@percent } \@writefile{toc}{\addvspace {10pt}} -\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{34}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{36}{}\protected@file@percent } \@writefile{toc}{{\hfill \ }} \bibcite{CVE-2019-10747}{11} \bibcite{dai_fpgp_2016}{12} @@ -54,4 +54,4 @@ \bibcite{zhang_boosting_2017}{26} \bibstyle{plain} \@input{Appendices.aux} -\gdef \@abspage@last{48} +\gdef \@abspage@last{50} diff --git a/Schrick-Noah_MS-Thesis.lof b/Schrick-Noah_MS-Thesis.lof index 72e1631..101dea9 100644 --- a/Schrick-Noah_MS-Thesis.lof +++ b/Schrick-Noah_MS-Thesis.lof @@ -5,4 +5,7 @@ \contentsline {figure}{\numberline {4.2}{\ignorespaces Inclusion of Synchronous Firing into GNU Bison, GNU Flex, and the overall program}}{21}{}% \contentsline {figure}{\numberline {4.3}{\ignorespaces Synchronous Firing in the Graph Generation Process}}{23}{}% \contentsline {figure}{\numberline {5.1}{\ignorespaces Task Overview of the Attack Graph Generation Process}}{27}{}% -\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{29}{}% +\contentsline {figure}{\numberline {5.2}{\ignorespaces Node Allocation for each Task}}{28}{}% +\contentsline {figure}{\numberline {5.3}{\ignorespaces Data Distribution of Task One}}{29}{}% +\contentsline {figure}{\numberline {5.4}{\ignorespaces Communication From Task 1 to Task 2 when the Number of Nodes Allocated is Equal}}{30}{}% +\contentsline {figure}{\numberline {5.5}{\ignorespaces Communication From Task 1 to Task 2 when Task 1 Has More Nodes Allocated}}{31}{}% diff --git a/Schrick-Noah_MS-Thesis.log b/Schrick-Noah_MS-Thesis.log index 4cd9425..c8b18aa 100644 --- a/Schrick-Noah_MS-Thesis.log +++ b/Schrick-Noah_MS-Thesis.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 18 MAR 2022 00:30 +This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.2.14) 18 MAR 2022 22:14 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -285,54 +285,65 @@ Package pdftex.def Info: ./Chapter5_img/horiz_task.drawio.png used on input li ne 42. (pdftex.def) Requested size: 469.75499pt x 308.4171pt. [26] [27 <./Chapter5_img/horiz_task.drawio.png>] +<./Chapter5_img/node-alloc.png, id=138, 818.30719pt x 536.75531pt> +File: ./Chapter5_img/node-alloc.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter5_img/node-alloc.png used on input line 54. +(pdftex.def) Requested size: 469.75499pt x 308.1323pt. + [28 <./Chapter5_img/node-alloc.PNG>] +<./Chapter5_img/Task1-Data-Dist.png, id=143, 1017.04968pt x 336.50719pt> +File: ./Chapter5_img/Task1-Data-Dist.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter5_img/Task1-Data-Dist.png used on input line + 68. +(pdftex.def) Requested size: 469.75499pt x 155.42674pt. + [29 <./Chapter5_img/Task1-Data-Dist.PNG>] +<./Chapter5_img/Task1-Case1.png, id=148, 586.44093pt x 339.51843pt> +File: ./Chapter5_img/Task1-Case1.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter5_img/Task1-Case1.png used on input line 77. -LaTeX Warning: File `"./Chapter5_img/node-alloc.png"' not found on input line 5 -4. +(pdftex.def) Requested size: 469.75499pt x 271.9622pt. +<./Chapter5_img/Task1-Case2.png, id=149, 702.37407pt x 414.79968pt> +File: ./Chapter5_img/Task1-Case2.png Graphic file (type png) + +Package pdftex.def Info: ./Chapter5_img/Task1-Case2.png used on input line 85. - -! Package pdftex.def Error: File `./Chapter5_img/node-alloc.png' not found: usi -ng draft setting. - -See the pdftex.def package documentation for explanation. -Type H for immediate help. - ... - -l.54 ...inewidth]{"./Chapter5_img/node-alloc.png"} - -? -[28] [29]) [30] +(pdftex.def) Requested size: 469.75499pt x 277.43332pt. + [30 <./Chapter5_img/Task1-Case1.PNG>] [31 <./Chapter5_img/Task1-Case2.PNG>]) [ +32] \openout2 = `Chapter6.aux'. (./Chapter6.tex CHAPTER 6. -[31 +[33 -]) [32] +]) [34] \openout2 = `Chapter7.aux'. (./Chapter7.tex CHAPTER 7. -) [33 +) [35 -] (./Schrick-Noah_MS-Thesis.bbl [34 +] (./Schrick-Noah_MS-Thesis.bbl [36 -] [35]) +] [37]) \c@appendixno=\count269 - [36] + [38] \openout2 = `Appendices.aux'. - (./Appendices.tex [37 + (./Appendices.tex [39 ]) -[38] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) +[40] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux) (./Chapter3.aux) (./Chapter4.aux) (./Chapter5.aux) (./Chapter6.aux) (./Chapter7.aux) (./Appendices.aux)) ) (\end occurred inside a group at level 6) @@ -345,13 +356,13 @@ CHAPTER 7. ### semi simple group (level 1) entered at line 52 (\begingroup) ### bottom level Here is how much of TeX's memory you used: - 2235 strings out of 478353 - 40301 string characters out of 5854635 - 345065 words of memory out of 5000000 + 2225 strings out of 478353 + 40165 string characters out of 5854635 + 345098 words of memory out of 5000000 20287 multiletter control sequences out of 15000+600000 407326 words of font info for 40 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 55i,7n,62p,946b,1305s stack positions out of 5000i,500n,10000p,200000b,80000s + 55i,7n,62p,1109b,1305s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.en c} -Output written on Schrick-Noah_MS-Thesis.pdf (48 pages, 434929 bytes). +Output written on Schrick-Noah_MS-Thesis.pdf (50 pages, 594171 bytes). PDF statistics: - 211 PDF objects out of 1000 (max. 8388607) - 134 compressed objects within 2 object streams + 226 PDF objects out of 1000 (max. 8388607) + 139 compressed objects within 2 object streams 0 named destinations out of 1000 (max. 500000) - 31 words of extra memory for PDF output out of 10000 (max. 10000000) + 51 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MS-Thesis.pdf b/Schrick-Noah_MS-Thesis.pdf index 41981f3..ec4b04c 100644 Binary files a/Schrick-Noah_MS-Thesis.pdf and b/Schrick-Noah_MS-Thesis.pdf differ diff --git a/Schrick-Noah_MS-Thesis.toc b/Schrick-Noah_MS-Thesis.toc index 9d406e0..5a40f09 100644 --- a/Schrick-Noah_MS-Thesis.toc +++ b/Schrick-Noah_MS-Thesis.toc @@ -50,48 +50,48 @@ \contentsline {subsection}{\numberline {5.3.1}\it Introduction to the Tasking Approach}{26}{}% \contentsline {subsection}{\numberline {5.3.2}\it Algorithm Design}{26}{}% \contentsline {subsubsection}{Communication Structure}{28}{}% -\contentsline {subsubsection}{Task Zero}{28}{}% -\contentsline {subsubsection}{Task One}{28}{}% -\contentsline {subsubsection}{Task Two}{28}{}% -\contentsline {subsubsection}{Task Three}{28}{}% -\contentsline {subsubsection}{Task Four and Task Five}{28}{}% -\contentsline {subsubsection}{MPI Tags}{30}{}% -\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{30}{}% -\contentsline {subsection}{\numberline {5.3.4}\it Results}{30}{}% -\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{30}{}% -\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{30}{}% -\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{30}{}% -\contentsline {subsubsection}{Communication Structure}{30}{}% -\contentsline {subsubsection}{Worker Nodes}{30}{}% -\contentsline {subsubsection}{Root Node}{30}{}% -\contentsline {subsubsection}{Database Node}{30}{}% -\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{30}{}% -\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{31}{}% -\contentsline {section}{\numberline {6.1}\bf Small Networks}{31}{}% -\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{31}{}% -\contentsline {subsection}{\numberline {6.1.2}\it Results}{31}{}% -\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{31}{}% -\contentsline {section}{\numberline {6.2}\bf Large Networks}{31}{}% -\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{31}{}% -\contentsline {subsection}{\numberline {6.2.2}\it Results}{31}{}% -\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{31}{}% -\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{31}{}% -\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{31}{}% -\contentsline {subsection}{\numberline {6.3.2}\it Results}{31}{}% -\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{31}{}% -\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{31}{}% -\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{32}{}% -\contentsline {subsection}{\numberline {6.4.2}\it Results}{32}{}% -\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{32}{}% -\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{33}{}% -\contentsline {section}{\numberline {7.1}\bf Future Work}{33}{}% +\contentsline {subsubsection}{Task 0}{29}{}% +\contentsline {subsubsection}{Task 1}{29}{}% +\contentsline {subsubsection}{Task 2}{30}{}% +\contentsline {subsubsection}{Task 3}{31}{}% +\contentsline {subsubsection}{Task 4 and Task 5}{31}{}% +\contentsline {subsubsection}{MPI Tags}{31}{}% +\contentsline {subsection}{\numberline {5.3.3}\it Performance Expectations}{32}{}% +\contentsline {subsection}{\numberline {5.3.4}\it Results}{32}{}% +\contentsline {section}{\numberline {5.4}\bf Subgraphing Approach}{32}{}% +\contentsline {subsection}{\numberline {5.4.1}\it Introduction to the Subgraphing Approach}{32}{}% +\contentsline {subsection}{\numberline {5.4.2}\it Algorithm Design}{32}{}% +\contentsline {subsubsection}{Communication Structure}{32}{}% +\contentsline {subsubsection}{Worker Nodes}{32}{}% +\contentsline {subsubsection}{Root Node}{32}{}% +\contentsline {subsubsection}{Database Node}{32}{}% +\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations}{32}{}% +\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {PERFORMANCE ANALYSIS}}}{33}{}% +\contentsline {section}{\numberline {6.1}\bf Small Networks}{33}{}% +\contentsline {subsection}{\numberline {6.1.1}\it Test Information}{33}{}% +\contentsline {subsection}{\numberline {6.1.2}\it Results}{33}{}% +\contentsline {subsection}{\numberline {6.1.3}\it Analysis}{33}{}% +\contentsline {section}{\numberline {6.2}\bf Large Networks}{33}{}% +\contentsline {subsection}{\numberline {6.2.1}\it Test Information}{33}{}% +\contentsline {subsection}{\numberline {6.2.2}\it Results}{33}{}% +\contentsline {subsection}{\numberline {6.2.3}\it Analysis}{33}{}% +\contentsline {section}{\numberline {6.3}\bf Large Exploit Lists}{33}{}% +\contentsline {subsection}{\numberline {6.3.1}\it Test Information}{33}{}% +\contentsline {subsection}{\numberline {6.3.2}\it Results}{33}{}% +\contentsline {subsection}{\numberline {6.3.3}\it Analysis}{33}{}% +\contentsline {section}{\numberline {6.4}\bf Distributed Hash Tables}{33}{}% +\contentsline {subsection}{\numberline {6.4.1}\it Test Information}{34}{}% +\contentsline {subsection}{\numberline {6.4.2}\it Results}{34}{}% +\contentsline {subsection}{\numberline {6.4.3}\it Analysis}{34}{}% +\contentsline {chapter}{\numberline {CHAPTER 7: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{35}{}% +\contentsline {section}{\numberline {7.1}\bf Future Work}{35}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{34}{}% +\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{36}{}% \addvspace {10pt} -\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{34}{}% +\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{36}{}% {\hfill \ } -\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{37}{}% -\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{38}{}% -\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{38}{}% -\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{38}{}% -\contentsline {subsubsection}{A Sub-subsection in an Appendix}{38}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX A:\ \ {\bf \uppercase {THE FIRST APPENDIX}} }{39}{}% +\contentsline {section}{\hspace {-\parindent }APPENDIX B:\ \ {\bf \uppercase {THE SECOND APPENDIX}} }{40}{}% +\contentsline {section}{\numberline {B.1}\bf A Heading in an Appendix}{40}{}% +\contentsline {subsection}{\numberline {B.1.1}\it A Subheading in an Appendix}{40}{}% +\contentsline {subsubsection}{A Sub-subsection in an Appendix}{40}{}%