Objective language changes; New subsection: 5.4.5 Subgraphing Result Analysis

This commit is contained in:
Noah L. Schrick 2022-04-20 12:38:05 -05:00
parent a53523531d
commit 962a95a942
12 changed files with 113 additions and 40 deletions

1
.~lock.mpiP_timing.ods# Normal file
View File

@ -0,0 +1 @@
,noah,NovaArchSys,20.04.2022 11:33,file:///home/noah/.config/libreoffice/4;

View File

@ -75,12 +75,19 @@
\newlabel{fig:subg_mod}{{5.15}{51}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.16}{\ignorespaces Duplicate States Explored vs Actual Number of States for the 1-4 Service Tests\relax }}{52}{}\protected@file@percent }
\newlabel{fig:subg_dup}{{5.16}{52}}
\@writefile{lot}{\contentsline {table}{\numberline {5.3}{\ignorespaces MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 1 Service Test\relax }}{53}{}\protected@file@percent }
\newlabel{table:1_serv_comm}{{5.3}{53}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.5}\it Subgraphing Result Analysis}{53}{}\protected@file@percent }
\newlabel{sec:Subg_Discuss}{{5.4.5}{53}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.17}{\ignorespaces Speedup and Efficiency of MPI Subgraphing when using a DHT\relax }}{54}{}\protected@file@percent }
\newlabel{fig:subg_DHT_Spd}{{5.17}{54}}
\@writefile{lof}{\contentsline {figure}{\numberline {5.18}{\ignorespaces Runtime of MPI Subgraphing when using a DHT vs not using a DHT\relax }}{55}{}\protected@file@percent }
\newlabel{fig:subg_DHT_base}{{5.18}{55}}
\@writefile{lot}{\contentsline {table}{\numberline {5.4}{\ignorespaces MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 4 Service Test\relax }}{55}{}\protected@file@percent }
\newlabel{table:4_serv_comm}{{5.4}{55}}
\citation{7087377}
\@setckpt{Chapter5}{
\setcounter{page}{56}
\setcounter{page}{57}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
@ -91,12 +98,12 @@
\setcounter{part}{0}
\setcounter{chapter}{5}
\setcounter{section}{4}
\setcounter{subsection}{4}
\setcounter{subsection}{5}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{18}
\setcounter{table}{2}
\setcounter{table}{4}
\setcounter{caption@flags}{2}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}

View File

@ -103,7 +103,7 @@ To ensure that the intended message is received by each node, the MPI message en
\begin{table}[]
\centering
\begin{tabular}{|l|l|}
\begin{tabular}{|c|c|}
\hline
\textbf{Tag} & \textbf{Description} \\ \hline
2 & Task 2 Finalize Signal \\ \hline
@ -215,7 +215,7 @@ Similar to Section \ref{sec:tasking-tag} that discussed the usage of MPI Tags fo
\begin{table}[]
\centering
\begin{tabular}{|l|l|}
\begin{tabular}{|c|c|}
\hline
\textbf{Tag} & \textbf{Description} \\ \hline
1 & New State from Root to Workers \\ \hline
@ -298,4 +298,57 @@ To minimize the duplicate work performed, a second approach using a distributed
\label{fig:subg_DHT_base}
\end{figure}
Implementing the DHT did prevent duplicate work, but the communication cost from repeated DHT queries by each worker node was far greater than the serial approach, and was also greater than the first approach for MPI Subgraphing without the DHT. As a result, the MPI Subgraphing approach is not viable as it stands. Future improvements or entire reworking will need to be performed, and this is discussed further in Section \ref{sec:FW}.
\TUsubsection{Subgraphing Result Analysis} \label{sec:Subg_Discuss}
Implementing the DHT did prevent duplicate work, but the communication cost from repeated DHT queries by each worker node was far greater than the serial approach, and was also greater than the first approach for MPI Subgraphing without the DHT. Table \ref{table:1_serv_comm} displays the communication cost incurred when using the DHT in the MPI Subgraphing approach with the 1 Service test. Likewise, Table \ref{table:4_serv_comm} displays the communication cost with the 4 Service test. The minimum, maximum, and average MPI communication time in relation to the entire program is high in all cases, and causes a large increase in the overall runtime.
\begin{table}[]
\centering
\begin{tabular}{|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{\textbf{1 Service Test, Synchronous Firing Enabled}} \\ \hline
\multicolumn{1}{|c|}{\# Compute Nodes} & \multicolumn{1}{|c|}{Min \%MPI Time} & \multicolumn{1}{|c|}{Max \%MPI Time} & \multicolumn{1}{|c|}{Avg \%MPI Time} & \multicolumn{1}{|c|}{Std Dev} \\ \hline
\multicolumn{1}{|c|}{2} & \multicolumn{1}{|c|}{78.23} & \multicolumn{1}{|c|}{84.68} & \multicolumn{1}{|c|}{81.46} & \multicolumn{1}{|c|}{4.56} \\ \hline
\multicolumn{1}{|c|}{3} & \multicolumn{1}{|c|}{78.54} & \multicolumn{1}{|c|}{99.64} & \multicolumn{1}{|c|}{87.92} & \multicolumn{1}{|c|}{10.74} \\ \hline
\multicolumn{1}{|c|}{4} & \multicolumn{1}{|c|}{80.13} & \multicolumn{1}{|c|}{99.12} & \multicolumn{1}{|c|}{90.04} & \multicolumn{1}{|c|}{9.27} \\ \hline
\multicolumn{1}{|c|}{5} & \multicolumn{1}{|c|}{86.07} & \multicolumn{1}{|c|}{99.66} & \multicolumn{1}{|c|}{92.72} & \multicolumn{1}{|c|}{6.68} \\ \hline
\multicolumn{1}{|c|}{6} & \multicolumn{1}{|c|}{82.94} & \multicolumn{1}{|c|}{98.9} & \multicolumn{1}{|c|}{92.72} & \multicolumn{1}{|c|}{6.92} \\ \hline
\multicolumn{1}{|c|}{7} & \multicolumn{1}{|c|}{82.81} & \multicolumn{1}{|c|}{99.17} & \multicolumn{1}{|c|}{92.85} & \multicolumn{1}{|c|}{5.83} \\ \hline
\multicolumn{1}{|c|}{8} & \multicolumn{1}{|c|}{83.58} & \multicolumn{1}{|c|}{99.35} & \multicolumn{1}{|c|}{94.19} & \multicolumn{1}{|c|}{5.91} \\ \hline
\multicolumn{1}{|c|}{9} & \multicolumn{1}{|c|}{82.92} & \multicolumn{1}{|c|}{99.58} & \multicolumn{1}{|c|}{94.85} & \multicolumn{1}{|c|}{6.76} \\ \hline
\multicolumn{1}{|c|}{10} & \multicolumn{1}{|c|}{84.02} & \multicolumn{1}{|c|}{98.98} & \multicolumn{1}{|c|}{95.10} & \multicolumn{1}{|c|}{5.19} \\ \hline
\multicolumn{1}{|c|}{11} & \multicolumn{1}{|c|}{84.41} & \multicolumn{1}{|c|}{99.25} & \multicolumn{1}{|c|}{95.55} & \multicolumn{1}{|c|}{5.06} \\ \hline
\multicolumn{1}{|c|}{12} & \multicolumn{1}{|c|}{84.82} & \multicolumn{1}{|c|}{99.68} & \multicolumn{1}{|c|}{96.49} & \multicolumn{1}{|c|}{4.83} \\ \hline
\end{tabular}
\caption{MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 1 Service Test}
\label{table:1_serv_comm}
\end{table}
\begin{table}[]
\centering
\begin{tabular}{|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{\textbf{4 Service Test, Synchronous Firing Enabled}} \\ \hline
\multicolumn{1}{|c|}{\# Compute Nodes} & \multicolumn{1}{|c|}{Min \%MPI Time} & \multicolumn{1}{|c|}{Max \%MPI Time} & \multicolumn{1}{|c|}{Avg \%MPI Time} & Std Dev \\ \hline
\multicolumn{1}{|c|}{2} & \multicolumn{1}{|c|}{89.13} & \multicolumn{1}{|c|}{91.53} & \multicolumn{1}{|c|}{90.33} & 1.70 \\ \hline
\multicolumn{1}{|c|}{3} & \multicolumn{1}{|c|}{89.18} & \multicolumn{1}{|c|}{99.99} & \multicolumn{1}{|c|}{93.60} & 5.67 \\ \hline
\multicolumn{1}{|c|}{4} & \multicolumn{1}{|c|}{90.41} & \multicolumn{1}{|c|}{99.99} & \multicolumn{1}{|c|}{94.44} & 4.53 \\ \hline
\multicolumn{1}{|c|}{5} & \multicolumn{1}{|c|}{91.4} & \multicolumn{1}{|c|}{99.98} & \multicolumn{1}{|c|}{95.44} & 3.36 \\ \hline
\multicolumn{1}{|c|}{6} & \multicolumn{1}{|c|}{89.01} & \multicolumn{1}{|c|}{99.97} & \multicolumn{1}{|c|}{94.11} & 3.59 \\ \hline
\multicolumn{1}{|c|}{7} & \multicolumn{1}{|c|}{91.41} & \multicolumn{1}{|c|}{99.99} & \multicolumn{1}{|c|}{96.58} & 2.63 \\ \hline
\multicolumn{1}{|c|}{8} & \multicolumn{1}{|c|}{89.57} & \multicolumn{1}{|c|}{99.98} & \multicolumn{1}{|c|}{96.06} & 3.08 \\ \hline
\multicolumn{1}{|c|}{9} & \multicolumn{1}{|c|}{90.94} & \multicolumn{1}{|c|}{99.98} & \multicolumn{1}{|c|}{96.77} & 2.83 \\ \hline
\multicolumn{1}{|c|}{10} & \multicolumn{1}{|c|}{89.2} & \multicolumn{1}{|c|}{99.97} & \multicolumn{1}{|c|}{96.02} & 3.29 \\ \hline
\multicolumn{1}{|c|}{11} & \multicolumn{1}{|c|}{89.1} & \multicolumn{1}{|c|}{99.97} & \multicolumn{1}{|c|}{96.46} & 3.25 \\ \hline
\multicolumn{1}{|c|}{12} & \multicolumn{1}{|c|}{89.3} & \multicolumn{1}{|c|}{99.97} & \multicolumn{1}{|c|}{96.89} & 2.83 \\ \hline
\end{tabular}
\caption{MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 4 Service Test}
\label{table:4_serv_comm}
\end{table}
When a DHT is not used, Figure \ref{fig:subg_dup} displays the amount of duplicate work that is performed. Section \ref{sec:Subgraphing-Results} discusses these results, and also describes that 35{\%} of the total program runtime is comprised entirely from worker nodes waiting for the root node to finish cleaning the duplicate work.
However, despite the results from both of these subgraphing approaches, the subgraphing approach can be improved through several means. This work took a first step, na\"ive approach when not using a DHT. Other than using markers to denote node local frontiers in the root frontier, no sophisticated metric is used for distributing starting states to compute nodes. The approach used is to simply pop a state from the queue and send it to a compute node. This work also discussed that if no marker was available for a compute node, a random state would be distributed instead. A better, more sophisticated metric would likely result in increased performance. The usage of the DHT can also likely be improved. When discovering new states, a compute node would check the DHT to see if the state had already been discovered. Since this query is performed on all new state discoveries, there is a large increase in overall runtime due to the communication cost. Better usage of the DHT can likely be implemented.
Other solutions can be implemented to minimize the duplicate work performed by MPI compute nodes. As discussed in Section \ref{sec:related_works}, the authors of \cite{7087377} presented a different approach for a distributed algorithm, but they made use of a virtual shared memory abstraction. A similar approach can be attempted for this subgraphing implementation.
Though the subgraphing approach presented by this work did not lead to a speedup in attack and compliance graph generation, it is believed that further tuning, better work distribution metrics, and/or better communication tactics can lead to increased performance. This work has laid the initial foundation for a data parallelism approach for an MPI implementation for attack and compliance graph generation, and future works and improvements can lead to promising results.

View File

@ -1,12 +1,12 @@
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{56}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Conclusions}{56}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Future Work}{57}{}\protected@file@percent }
\newlabel{sec:FW}{{6.2}{57}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Possible Method for Blending MPI and OpenMP for Task 2 of the MPI Tasking Approach\relax }}{58}{}\protected@file@percent }
\newlabel{fig:OMP_MPI_Blend}{{6.1}{58}}
\@writefile{toc}{\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{57}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.1}\bf Conclusions}{57}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.2}\bf Future Work}{58}{}\protected@file@percent }
\newlabel{sec:FW}{{6.2}{58}}
\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Possible Method for Blending MPI and OpenMP for Task 2 of the MPI Tasking Approach\relax }}{59}{}\protected@file@percent }
\newlabel{fig:OMP_MPI_Blend}{{6.1}{59}}
\@setckpt{Chapter6}{
\setcounter{page}{60}
\setcounter{page}{61}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}

View File

@ -29,9 +29,9 @@
\bibcite{baloyi_guidelines_2019}{7}
\bibcite{allman_complying_2006}{8}
\@writefile{toc}{{\hfill \ }}
\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{60}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{61}{}\protected@file@percent }
\@writefile{toc}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{60}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{61}{}\protected@file@percent }
\@writefile{toc}{{\hfill \ }}
\bibcite{noauthor_sarbanes-oxley_2002}{9}
\bibcite{noauthor_health_1996}{10}
@ -60,4 +60,4 @@
\bibcite{pacheco_introduction_2011}{33}
\bibcite{lawrence_livermore_national_laboratory_mpip_nodate}{34}
\bibstyle{ieeetr}
\gdef \@abspage@last{74}
\gdef \@abspage@last{75}

View File

@ -25,4 +25,4 @@
\contentsline {figure}{\numberline {5.16}{\ignorespaces Duplicate States Explored vs Actual Number of States for the 1-4 Service Tests\relax }}{52}{}%
\contentsline {figure}{\numberline {5.17}{\ignorespaces Speedup and Efficiency of MPI Subgraphing when using a DHT\relax }}{54}{}%
\contentsline {figure}{\numberline {5.18}{\ignorespaces Runtime of MPI Subgraphing when using a DHT vs not using a DHT\relax }}{55}{}%
\contentsline {figure}{\numberline {6.1}{\ignorespaces Possible Method for Blending MPI and OpenMP for Task 2 of the MPI Tasking Approach\relax }}{58}{}%
\contentsline {figure}{\numberline {6.1}{\ignorespaces Possible Method for Blending MPI and OpenMP for Task 2 of the MPI Tasking Approach\relax }}{59}{}%

View File

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.3.21) 4 APR 2022 21:04
This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/Arch Linux) (preloaded format=pdflatex 2022.4.17) 20 APR 2022 12:37
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -525,26 +525,35 @@ File: ./Chapter5_img/DHT_noDHT.png Graphic file (type png)
<use ./Chapter5_img/DHT_noDHT.png>
Package pdftex.def Info: ./Chapter5_img/DHT_noDHT.png used on input line 295.
(pdftex.def) Requested size: 469.75499pt x 289.27902pt.
) [53] [54 <./Chapter5_img/DHT_Spd.png> <./Chapter5_img/DHT_Eff.png>] [55 <./Ch
apter5_img/DHT_noDHT.png>]
LaTeX Warning: No positions in optional float specifier.
Default added (so using `tbp') on input line 304.
LaTeX Warning: No positions in optional float specifier.
Default added (so using `tbp') on input line 326.
[53] [54 <./Chapter5_img/DHT_Spd.png> <./Chapter5_img/DHT_Eff.png>] [55 <./Chap
ter5_img/DHT_noDHT.png>]) [56]
\openout2 = `Chapter6.aux'.
(./Chapter6.tex
CHAPTER 6.
[56
[57
]
<./Chapter5_img/MPI-OpenMP-Blend.PNG, id=281, 613.04031pt x 354.07281pt>
<./Chapter5_img/MPI-OpenMP-Blend.PNG, id=284, 613.04031pt x 354.07281pt>
File: ./Chapter5_img/MPI-OpenMP-Blend.PNG Graphic file (type png)
<use ./Chapter5_img/MPI-OpenMP-Blend.PNG>
Package pdftex.def Info: ./Chapter5_img/MPI-OpenMP-Blend.PNG used on input lin
e 21.
(pdftex.def) Requested size: 469.75499pt x 271.31865pt.
[57] [58 <./Chapter5_img/MPI-OpenMP-Blend.PNG>]) [59]
(./Schrick-Noah_MS-Thesis.bbl [60
[58] [59 <./Chapter5_img/MPI-OpenMP-Blend.PNG>]) [60]
(./Schrick-Noah_MS-Thesis.bbl [61
@ -572,13 +581,13 @@ Underfull \hbox (badness 2119) in paragraph at lines 51--54
ntent/pkg/PLAW-
[]
[61] [62]
[62] [63]
Underfull \hbox (badness 1383) in paragraph at lines 175--178
[]\OT1/cmr/m/n/12 Lawrence Liv-er-more Na-tional Lab-o-ra-tory, ``mpiP, a light
-weight MPI pro-filer.''
[]
) [63] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux)
) [64] (./Schrick-Noah_MS-Thesis.aux (./Chapter1.aux) (./Chapter2.aux)
(./Chapter3.aux) (./Chapter4.aux) (./Chapter5.aux) (./Chapter6.aux)) )
(\end occurred inside a group at level 6)
@ -590,13 +599,13 @@ Underfull \hbox (badness 1383) in paragraph at lines 175--178
### semi simple group (level 1) entered at line 52 (\begingroup)
### bottom level
Here is how much of TeX's memory you used:
4481 strings out of 478276
84087 string characters out of 5853013
374095 words of memory out of 5000000
22587 multiletter control sequences out of 15000+600000
4485 strings out of 478276
84152 string characters out of 5853013
387130 words of memory out of 5000000
22591 multiletter control sequences out of 15000+600000
473155 words of font info for 41 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
67i,9n,77p,2339b,1439s stack positions out of 5000i,500n,10000p,200000b,80000s
67i,9n,77p,2339b,1440s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.en
c}</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/
texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texmf-dist/fon
@ -605,10 +614,10 @@ ts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texmf-dist/fonts/type1/public
y10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/
share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb></usr/share/texmf-di
st/fonts/type1/public/cm-super/sfrm1200.pfb>
Output written on Schrick-Noah_MS-Thesis.pdf (74 pages, 2636912 bytes).
Output written on Schrick-Noah_MS-Thesis.pdf (75 pages, 2642634 bytes).
PDF statistics:
344 PDF objects out of 1000 (max. 8388607)
192 compressed objects within 2 object streams
347 PDF objects out of 1000 (max. 8388607)
194 compressed objects within 2 object streams
0 named destinations out of 1000 (max. 500000)
161 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -3,3 +3,5 @@
\contentsline {table}{\numberline {4.2}{\ignorespaces Tabled Results for the Synchronous Firing Testing\relax }}{28}{}%
\contentsline {table}{\numberline {5.1}{\ignorespaces MPI Tags for the MPI Tasking Approach\relax }}{39}{}%
\contentsline {table}{\numberline {5.2}{\ignorespaces MPI Tags for the MPI Subgraphing Approach\relax }}{47}{}%
\contentsline {table}{\numberline {5.3}{\ignorespaces MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 1 Service Test\relax }}{53}{}%
\contentsline {table}{\numberline {5.4}{\ignorespaces MPI Communication Time Percentage in Relation to the Overall Program Runtime for the 4 Service Test\relax }}{55}{}%

Binary file not shown.

View File

@ -155,7 +155,7 @@
\fifthmember{} % as needed
\sixthmember{} % as needed
\numofpages{74} % number of pages in the document
\numofpages{75} % number of pages in the document
\numofchapters=6 % number of chapters in the document
\lastchapter{Conclusions and Future Works} % the title of the last numbered chapter
\numofabstractwords{196} % number of words in the abstract

View File

@ -67,11 +67,12 @@
\contentsline {subsubsection}{\numberline {5.4.2.4}MPI Tags}{46}{}%
\contentsline {subsection}{\numberline {5.4.3}\it Performance Expectations and Use Cases}{46}{}%
\contentsline {subsection}{\numberline {5.4.4}\it Results}{47}{}%
\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{56}{}%
\contentsline {section}{\numberline {6.1}\bf Conclusions}{56}{}%
\contentsline {section}{\numberline {6.2}\bf Future Work}{57}{}%
\contentsline {subsection}{\numberline {5.4.5}\it Subgraphing Result Analysis}{53}{}%
\contentsline {chapter}{\numberline {CHAPTER 6: }{\bf \uppercase {CONCLUSIONS AND FUTURE WORKS}}}{57}{}%
\contentsline {section}{\numberline {6.1}\bf Conclusions}{57}{}%
\contentsline {section}{\numberline {6.2}\bf Future Work}{58}{}%
{\hfill \ }
\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{60}{}%
\contentsline {section}{\hspace {-\parindent }NOMENCLATURE}{61}{}%
\addvspace {10pt}
\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{60}{}%
\contentsline {section}{\hspace {-\parindent }BIBLIOGRAPHY}{61}{}%
{\hfill \ }

BIN
mpiP_timing.ods Normal file

Binary file not shown.