From 1621ab56f49536a521eb4f25e4e9357a6b5af9b4 Mon Sep 17 00:00:00 2001 From: noah Date: Wed, 5 Apr 2023 18:21:16 -0500 Subject: [PATCH] Testing Process --- Bibliography.bib | 24 +++++++++++-- Schrick-Noah_MPI-Tasking.aux | 15 ++++---- Schrick-Noah_MPI-Tasking.bbl | 3 ++ Schrick-Noah_MPI-Tasking.blg | 51 ++++++++++++++------------- Schrick-Noah_MPI-Tasking.log | 65 +++++++++++++++++------------------ Schrick-Noah_MPI-Tasking.out | 9 ++--- Schrick-Noah_MPI-Tasking.pdf | Bin 1004746 -> 1005307 bytes Schrick-Noah_MPI-Tasking.tex | 1 + 8 files changed, 97 insertions(+), 71 deletions(-) diff --git a/Bibliography.bib b/Bibliography.bib index 238d3f1..effc2da 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -1092,11 +1092,29 @@ pages = {2317--2322}, } -@misc{noauthor_parallel_nodate-1, - title = {Parallel {BGL} {Distributed} {Adjacency} {List} - 1.73.0}, +@software{noauthor_parallel_nodate-1, + author = {{Nick Edmonds}, {Douglas Gregor}, {Andrew Lumsdaine}}, + title = {Parallel {BGL} {Distributed} {Adjacency} {List}}, url = {https://www.boost.org/doc/libs/1_73_0/libs/graph_parallel/doc/html/distributed_adjacency_list.html}, + version = {1.73.0}, urldate = {2021-04-11}, - file = {Parallel BGL Distributed Adjacency List - 1.73.0:/home/noah/Zotero/storage/CXKARHSV/distributed_adjacency_list.html:text/html}, +} + +@software{hadoop, + author = {{Apache Software Foundation}}, + title = {Hadoop}, + url = {https://hadoop.apache.org}, + version = {0.20.2}, + date = {2010-02-19}, +} + + +@software{Slurm, + author = {SchedMD}, + title = {Slurm {Workload} {Manager}}, + url = {https://slurm.schedmd.com/overview.html}, + version = {23.02}, + urldate = {2023-04-05}, } @misc{noauthor_property_nodate, diff --git a/Schrick-Noah_MPI-Tasking.aux b/Schrick-Noah_MPI-Tasking.aux index 3dd38a8..ea06aa6 100644 --- a/Schrick-Noah_MPI-Tasking.aux +++ b/Schrick-Noah_MPI-Tasking.aux @@ -85,12 +85,14 @@ \newlabel{table:tasking-gen-perf}{{II}{5}{Task Descriptions and Performance Notes}{table.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{5}{subsection.6.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Applicability of Exploits}{5}{subsection.6.2}\protected@file@percent } +\citation{Slurm} \@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Example of a Not Applicable Exploit for the MPI Tasking Testing}}{6}{figure.6}\protected@file@percent } \newlabel{fig:NA-exp}{{6}{6}{Example of a Not Applicable Exploit for the MPI Tasking Testing}{figure.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Example of an Artificially Applicable Exploit for the MPI Tasking Testing}}{6}{figure.7}\protected@file@percent } \newlabel{fig:Appl-exp}{{7}{6}{Example of an Artificially Applicable Exploit for the MPI Tasking Testing}{figure.7}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Database Load}{6}{subsection.6.3}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{6}{subsection.6.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Testing Process}{6}{subsection.6.5}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{6}{section.7}\protected@file@percent } \newlabel{sec:Tasking-Results}{{VII}{6}{Results}{section.7}{}} \bibdata{Bibliography} @@ -99,20 +101,20 @@ \bibcite{8652334}{3} \bibcite{baloyi_guidelines_2019}{4} \bibcite{allman_complying_2006}{5} -\bibcite{j_hale_compliance_nodate}{6} -\bibcite{ou_scalable_2006}{7} -\bibcite{CPSIOT}{8} +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{7}{section.8}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{7}{section.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{7}{section*.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{7}{figure.8}\protected@file@percent } \newlabel{fig:Spd-Eff-Task}{{8}{7}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.8}{}} \@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces MPI Tasking Approach Runtime Results}}{7}{figure.9}\protected@file@percent } \newlabel{fig:Tasking-RT}{{9}{7}{MPI Tasking Approach Runtime Results}{figure.9}{}} \@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{7}{figure.10}\protected@file@percent } \newlabel{fig:Tasking-Spd}{{10}{7}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.10}{}} -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{7}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{7}{section.9}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{7}{section*.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{7}{figure.11}\protected@file@percent } \newlabel{fig:Tasking-Eff}{{11}{7}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.11}{}} +\bibcite{j_hale_compliance_nodate}{6} +\bibcite{ou_scalable_2006}{7} +\bibcite{CPSIOT}{8} \bibcite{ming_jo}{9} \bibcite{cook_rage_2018}{10} \bibcite{pacheco_introduction_2011}{11} @@ -130,5 +132,6 @@ \bibcite{li_concurrency_2019}{23} \bibcite{9150145}{24} \bibcite{7087377}{25} +\bibcite{Slurm}{26} \bibstyle{ieeetr} \gdef \@abspage@last{8} diff --git a/Schrick-Noah_MPI-Tasking.bbl b/Schrick-Noah_MPI-Tasking.bbl index 6fb86a7..0c5e4d8 100644 --- a/Schrick-Noah_MPI-Tasking.bbl +++ b/Schrick-Noah_MPI-Tasking.bbl @@ -132,4 +132,7 @@ 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. +\bibitem{Slurm} +SchedMD, ``Slurm {Workload} {Manager}.'' + \end{thebibliography} diff --git a/Schrick-Noah_MPI-Tasking.blg b/Schrick-Noah_MPI-Tasking.blg index d61929c..b102127 100644 --- a/Schrick-Noah_MPI-Tasking.blg +++ b/Schrick-Noah_MPI-Tasking.blg @@ -3,36 +3,38 @@ 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 25 entries, +Warning--entry type for "Slurm" isn't style-file defined +--line 1112 of file Bibliography.bib +You've used 26 entries, 1876 wiz_defined-function locations, - 607 strings with 8782 characters, -and the built_in function-call counts, 6449 in all, are: -= -- 601 -> -- 268 + 611 strings with 8825 characters, +and the built_in function-call counts, 6563 in all, are: += -- 609 +> -- 272 < -- 0 -+ -- 99 -- -- 74 -* -- 441 -:= -- 899 ++ -- 101 +- -- 75 +* -- 444 +:= -- 914 add.period$ -- 26 -call.type$ -- 25 -change.case$ -- 25 +call.type$ -- 26 +change.case$ -- 26 chr.to.int$ -- 0 -cite$ -- 25 -duplicate$ -- 346 -empty$ -- 658 -format.name$ -- 74 -if$ -- 1582 +cite$ -- 26 +duplicate$ -- 350 +empty$ -- 676 +format.name$ -- 75 +if$ -- 1611 int.to.chr$ -- 0 -int.to.str$ -- 25 +int.to.str$ -- 26 missing$ -- 22 -newline$ -- 81 -num.names$ -- 24 -pop$ -- 126 +newline$ -- 84 +num.names$ -- 25 +pop$ -- 131 preamble$ -- 1 purify$ -- 0 quote$ -- 0 -skip$ -- 212 +skip$ -- 220 stack$ -- 0 substring$ -- 383 swap$ -- 121 @@ -41,6 +43,7 @@ text.prefix$ -- 0 top$ -- 0 type$ -- 0 warning$ -- 0 -while$ -- 58 -width$ -- 27 -write$ -- 226 +while$ -- 59 +width$ -- 28 +write$ -- 232 +(There was 1 warning) diff --git a/Schrick-Noah_MPI-Tasking.log b/Schrick-Noah_MPI-Tasking.log index 9f99fa8..012ab24 100644 --- a/Schrick-Noah_MPI-Tasking.log +++ b/Schrick-Noah_MPI-Tasking.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 5 APR 2023 17:54 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 5 APR 2023 18:18 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -539,14 +539,14 @@ Underfull \hbox (badness 3260) in paragraph at lines 77--80 Underfull \vbox (badness 10000) has occurred while \output is active [] -<./images/horiz_task.drawio.png, id=156, 1181.41376pt x 785.93625pt> +<./images/horiz_task.drawio.png, id=160, 1181.41376pt x 785.93625pt> File: ./images/horiz_task.drawio.png Graphic file (type png) Package pdftex.def Info: ./images/horiz_task.drawio.png used on input line 116 . (pdftex.def) Requested size: 252.0pt x 167.64183pt. [2] -<./images/node-alloc.png, id=180, 818.30719pt x 536.75531pt> +<./images/node-alloc.png, id=184, 818.30719pt x 536.75531pt> File: ./images/node-alloc.png Graphic file (type png) Package pdftex.def Info: ./images/node-alloc.png used on input line 128. @@ -555,18 +555,18 @@ Package pdftex.def Info: ./images/node-alloc.png used on input line 128. LaTeX Warning: Reference `sec:db-stor' on page 3 undefined on input line 139. -<./images/Task1-Data-Dist.png, id=183, 597.98407pt x 197.48781pt> +<./images/Task1-Data-Dist.png, id=187, 597.98407pt x 197.48781pt> File: ./images/Task1-Data-Dist.png Graphic file (type png) Package pdftex.def Info: ./images/Task1-Data-Dist.png used on input line 145. (pdftex.def) Requested size: 252.0pt x 83.22455pt. [3 <./images/horiz_task.drawio.png> <./images/node-alloc.PNG>] -<./images/Task1-Case1.png, id=196, 586.44093pt x 339.51843pt> +<./images/Task1-Case1.png, id=200, 586.44093pt x 339.51843pt> File: ./images/Task1-Case1.png Graphic file (type png) Package pdftex.def Info: ./images/Task1-Case1.png used on input line 154. (pdftex.def) Requested size: 252.0pt x 145.89163pt. -<./images/Task1-Case2.png, id=197, 702.37407pt x 414.79968pt> +<./images/Task1-Case2.png, id=201, 702.37407pt x 414.79968pt> File: ./images/Task1-Case2.png Graphic file (type png) Package pdftex.def Info: ./images/Task1-Case2.png used on input line 161. @@ -600,13 +600,13 @@ Underfull \hbox (badness 1389) in paragraph at lines 210--211 LaTeX Warning: No positions in optional float specifier. Default added (so using `tbp') on input line 212. -<./images/NA.png, id=210, 369.38pt x 118.4425pt> +<./images/NA.png, id=214, 369.38pt x 118.4425pt> File: ./images/NA.png Graphic file (type png) Package pdftex.def Info: ./images/NA.png used on input line 236. (pdftex.def) Requested size: 184.68954pt x 59.2211pt. [5] -<./images/Applicable_E.png, id=221, 360.34625pt x 104.39pt> +<./images/Applicable_E.png, id=225, 360.34625pt x 104.39pt> File: ./images/Applicable_E.png Graphic file (type png) Package pdftex.def Info: ./images/Applicable_E.png used on input line 260. @@ -618,48 +618,45 @@ Underfull \hbox (badness 7451) in paragraph at lines 277--278 LaTeX Warning: Reference `sec:test-platform' on page 6 undefined on input line -280. +283. [6 <./images/NA.png> <./images/Applicable_E.png>] -LaTeX Warning: Reference `sec:FW' on page 7 undefined on input line 284. +LaTeX Warning: Reference `sec:FW' on page 7 undefined on input line 287. -Underfull \hbox (badness 3713) in paragraph at lines 284--285 +Underfull \hbox (badness 3713) in paragraph at lines 287--288 []\OT1/ptm/m/n/10 In terms of efficiency, 2 compute nodes offer the [] -<./images/Speedup-Esize-Tasking.png, id=237, 620.208pt x 321.93pt> +<./images/Speedup-Esize-Tasking.png, id=242, 620.208pt x 321.93pt> File: ./images/Speedup-Esize-Tasking.png Graphic file (type png) Package pdftex.def Info: ./images/Speedup-Esize-Tasking.png used on input line - 292. + 295. (pdftex.def) Requested size: 252.0pt x 130.80338pt. -<./images/Eff-Esize-Tasking.png, id=238, 620.208pt x 322.149pt> +<./images/Eff-Esize-Tasking.png, id=243, 620.208pt x 322.149pt> File: ./images/Eff-Esize-Tasking.png Graphic file (type png) -Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 293 +Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 296 . (pdftex.def) Requested size: 252.0pt x 130.89236pt. -<./images/Tasking_RT.png, id=239, 860.46469pt x 257.96375pt> +<./images/Tasking_RT.png, id=244, 860.46469pt x 257.96375pt> File: ./images/Tasking_RT.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_RT.png used on input line 300. +Package pdftex.def Info: ./images/Tasking_RT.png used on input line 303. (pdftex.def) Requested size: 252.0pt x 75.54756pt. -<./images/Tasking_Spd.png, id=240, 860.46469pt x 276.53313pt> +<./images/Tasking_Spd.png, id=245, 860.46469pt x 276.53313pt> File: ./images/Tasking_Spd.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 307. +Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 310. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -<./images/Tasking_Eff.png, id=241, 860.46469pt x 276.53313pt> +<./images/Tasking_Eff.png, id=246, 860.46469pt x 276.53313pt> File: ./images/Tasking_Eff.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 314. +Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 317. (pdftex.def) Requested size: 252.0pt x 80.98582pt. (./Schrick-Noah_MPI-Tasking.bbl -Underfull \vbox (badness 10000) has occurred while \output is active [] - - Underfull \hbox (badness 1442) in paragraph at lines 21--26 \OT1/ptm/m/n/8 A Focus on Cyberphysical Systems and Internet of Things,'' in [] @@ -711,16 +708,16 @@ LaTeX Warning: There were undefined references. Package rerunfilecheck Info: File `Schrick-Noah_MPI-Tasking.out' has not change d. -(rerunfilecheck) Checksum: CB4364753E2594613B2E0BA2E8950C88;3186. +(rerunfilecheck) Checksum: 4585725CEAB08F9F367E9B263A126799;3322. ) Here is how much of TeX's memory you used: - 12240 strings out of 476025 - 194660 string characters out of 5796533 + 12244 strings out of 476025 + 194707 string characters out of 5796533 1874388 words of memory out of 5000000 - 32443 multiletter control sequences out of 15000+600000 + 32445 multiletter control sequences out of 15000+600000 552034 words of font info for 106 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 75i,14n,76p,2022b,591s stack positions out of 5000i,500n,10000p,200000b,80000s + 75i,14n,76p,2022b,599s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on Schrick-Noah_MPI-Tasking.pdf (8 pages, 1004746 bytes). +Output written on Schrick-Noah_MPI-Tasking.pdf (8 pages, 1005307 bytes). PDF statistics: - 314 PDF objects out of 1000 (max. 8388607) - 263 compressed objects within 3 object streams - 71 named destinations out of 1000 (max. 500000) - 253 words of extra memory for PDF output out of 10000 (max. 10000000) + 322 PDF objects out of 1000 (max. 8388607) + 271 compressed objects within 3 object streams + 73 named destinations out of 1000 (max. 500000) + 261 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MPI-Tasking.out b/Schrick-Noah_MPI-Tasking.out index 74c893e..f4becc7 100644 --- a/Schrick-Noah_MPI-Tasking.out +++ b/Schrick-Noah_MPI-Tasking.out @@ -18,7 +18,8 @@ \BOOKMARK [2][-]{subsection.6.2}{\376\377\000A\000p\000p\000l\000i\000c\000a\000b\000i\000l\000i\000t\000y\000\040\000o\000f\000\040\000E\000x\000p\000l\000o\000i\000t\000s}{section.6}% 18 \BOOKMARK [2][-]{subsection.6.3}{\376\377\000D\000a\000t\000a\000b\000a\000s\000e\000\040\000L\000o\000a\000d}{section.6}% 19 \BOOKMARK [2][-]{subsection.6.4}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000P\000l\000a\000t\000f\000o\000r\000m}{section.6}% 20 -\BOOKMARK [1][-]{section.7}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 21 -\BOOKMARK [1][-]{section.8}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 22 -\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 23 -\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 24 +\BOOKMARK [2][-]{subsection.6.5}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000P\000r\000o\000c\000e\000s\000s}{section.6}% 21 +\BOOKMARK [1][-]{section.7}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 22 +\BOOKMARK [1][-]{section.8}{\376\377\000A\000n\000a\000l\000y\000s\000i\000s}{}% 23 +\BOOKMARK [1][-]{section.9}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{}% 24 +\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 25 diff --git a/Schrick-Noah_MPI-Tasking.pdf b/Schrick-Noah_MPI-Tasking.pdf index 3cdf207a66fbaa9a80f002bb58e504e1eb89572a..92db5908584e55bdc301fb4d0d21f5cc6e1955d5 100644 GIT binary patch delta 21040 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

%~$UoOUYT5x_<3_D+;>M$>bd zt%~~|lzFxxEe0t=DAhNqD!b3JOeT6>L$k{(CTz>L>pZdIE9+m$?^l0wNJldv%6=NV zBu1ec8on3g8JG2=$5!mk2L3eS?MA;Lts{qg8m(5{F&1yCXTF5ECH}q#f_?&l&rLl< z8N1$_FLFFBL*3IpGwBDWG)OUK?0^_nCR2jU*5}T#<~Eil425#ZW6s}7&n-Wxpu5oD z#Ar-B9Eva>6Cj`dY#TtzMSGo^an5ssEkf!QRP5DirT#{j*3)(~o`*Z{8yba*`96VL zTt)-`E_gynF~MO>RAGMEzmYO>_uZV_ooPGxG@8T_sP$uitIOE_L>CNQMs1aYgNq&+ z1G75o@z2M81`S7!RnP=gqe+Q2pYFT!61q~E=@joaz8dJSj`B2y?{~KxvJ$%_`zW}? z^2=P9h!>QHDoTTei@2lK-)Z0K(@7%I*v>|P(rbBwoZoxt%zr+a4DWQJV@ZDH!+~j^ z?7O+sfI`g943CfXyWf`A?eR3^4IC9wBnJMmwhna)3t_w73MB#;CG_u~1mph^ zv?KOcEqb-08rphTvzyF4R+c1M<%w1k5~-_OLvge1X%mT6RchNNCsb+^z1^wQejrn< zo5UJnAlMf>eTqC>LM!EEPoK$}^kij7QdbjSz3X}ERseb8%aSqkZc-~%=5 zj)ybr!J}XM8bhwuZH%-wy)kla5-7`7(SOR!)NGImO#$X&CS8Aq(}}K&K6C!!v`4Zy z{huDJ+~!Tm0tG*Ty9nsW9swg)J{p^Jwp0~p<|H*D^Gm>-_5 zHJ4yPqBqhzT(=}j+&9uYV(ulZ#z5$w3^WMiVKqWE1`TDZ&{@hF=N}Wc)U&Xfqy}g{ zV>!X~93WDnVex7*u8C&+L-|8@ycI|~-$S({AsElv!eGD!gF%s6JbL4irls`-g3ZdY zpO5^dP$qY3X?K%P3S3=hHT|b9Moh!T0bUZy;n<XDRl5cWU4M+Gv-x$9MgB%K@_T%`BqY`v!Y%JI;E)OoZWA`W;{7D@Rh#UI$lX zT8;4{E7!h@xjq9VZA)RtGT;vKN!v>4Ur*^DSX?NWp0yy_gtB&`)gds73{&yX49u9!cYJ9^_my#VLnL+_ba9wd&c~vu1Ysu9x*gyFgZQeHyKPA z*e;;A;D1tMtyj6{lrX3u7z{7kYE8D^f+Z}o20K7aiRIhi!=#OBpe@oyML%wftzc#n y4O^yZ>evW=v%|8hF_c|MKfZ4H delta 20474 zcmYhiV{m0r*DV~oW83Q3wvCQ$+dQ$Y6B`|~b7FLC+h&Iy>+APazLW+@3hsbw;ctUWjSgPmplfGMCif8ag>makd;x;aU_n6e!hZDWX3v{Fo%;C8B-3C;Eb> z(8l)i*q=C0km+!(BIu?WF!USx!qA_GC_lqZ)k@|R@TS7d#t(X|*6}y3_%id;CS7Jq zO_WMN7KXgkkoQU{D*a^YbS>imHfTIC*9c-U?Uww#AMEkqWy^w$bG}jBxH|JJ)@0IV zDvXruP(#|5q{^@@NmjRA!2;C~>`7Lkrr3A6KLindzz-m5;jn8hQurr1W-o(qo70jm z!1Qe+@mOTp-7|wTvU#&{v?dW-#-F+dq0-HXn?a~oWQo*?(xn6D5Qn^gT(FS85R8XD zGdiU4aHrUJ5XTr0KL$Kd#!ckpH0TWJLZ*s1=O-XIJpkT#nFmNUeSAkIN*DMf`wl3HMs_-wqBwqpzs$fn)FBHy-L4Rum^ zO%#;-7L{ClVf+e zw&>v%DamQloQXsv2g2mOOhMc6;wKHVs_2VY)8>acK9*XZ5T}M)O5Fo-XdMk}3}m97lD4<0x_XK>*@dHd>z2q+{ACCHKq4!@9rvQHXx}dQqpmYD zAO9{Mh{B;UkiIqHK}A$?B+c1-6JER?Yg-g|69ulGX~`5ouG(a$271KM$kbnxrI$!W z(d>{5k_bPifLvWjxtvGxnB9X?Ik~ccMm>*wK|r~DTR^rXa*H^2bxF`|@Rx4+GXW8k zDa<<2(WeZ(Q`WvDyWKV?q~B)lrZWxAM=0`+S@BqQa0@rG6%Fn6PNP|Cb6n|^A8fh3 zSH)(8Pu?)#@%Uy=31Tc8&&+kUxRucukcgr+u+4FMX++jq&JxpohoPmifqkx5J^YiZ za(mFOk6K2#WsF`s7@6giEKd`F#8BTF z>@px{re5~BTC4kW>44JgBlfS*#ly_FX+G9H9zB$_px+0|T8+L!M z{C!%;Rlnf}2aL~FXcS$3*`3GQwTEgN>O(TZj;%KRpN!fXJq=KYqvFmerOcm=$a9PP541-fhw zCmCf6iG@G8>e2V-793CEs+rJ8_cTV;BOBI97)hU;>E^2-_%V$2tR#rRKD|Q}Ae;qY z@6g&}6{S`m$#TFwZ5zx8)PX)u6XE$&GpR)uDa{jeer@RJ4Pf8_2Q_`*t_^wXOkSA) ziI)l)!1P5zSMo66*Mo>ylS`?r#G%$v7ch50>kE(Ta1 z)`ARBteh&8qB}ezr3azU`i;amc7&$~xHi$KxDV@_rqT&Y=$j3n52*@KM8@)s`MS=b zj7Y{KsEB6W6_YG^zYpOqGb8l!iizZy6pvqObC(P7{$f;alRiJmtD-gN(ufO)uY2-% z(9kMLuIuMkI<4xKh2Ze{`Q746#P2wxr8XyEC&WS{)nESYr|Hlb;gL`eU(pk|tA`lD zg1jRn+DEJnZ`Wj@!ffk3s0NT8P~eoB?;vC~gj~SBSAWN=de8Z9Y235_TL%Ak2^t93 zUz~VMJ-JUk0o)mtSMC%TXBPkWk;(K@kTlAv!vC8W-f;E}81u#3P)~|-m|YQxx%O1f zV0C}Q$HZrD{F}Z;(KQ}HKCFlvdPHTb{AJhCRrrjjP?WwwLdQ}RoT?iUQ6{R(cPCjU z&^TJI;$>_9jE-vF4LDtu$+fkIKrBGR5({{U4ng986<89pk-LD@u>`MDpFCdhka{$@ zLr7vi(<&4hJN-7VszPdLG`?n>8$WS&uro0xKysqI_6LQnv|p|2A%ct-uI7pPn=%+S ztLA~XSp7VuJM9@&uC&9UAz}Ux|FLSV8&qV8uf*Ttf+>O1fKlD=5F@KCe<`q4?BoGV z$+H6NgoKivADJ<129qS?XNB+CioM5cplR7&Oa%X_`XaIw*Om(L>Uq1Twn8@8W;8~4 zZ9`4bLPm1#HXyB(rb~1&dU#oUQkvvcK-i6=$ob+LbZ(B}Fk(%T=qwIobcwARc|DyQ zEjC>@GLAY+?4H?3Iw*)4jX5<$O5RN2m!b6090SuJBH1cQL`QBKM*ph66^Hpw;E4navK|Fq%1KnwzI` zM%TnO&H}?(6U#m_CW50K+T|`B{;$Znzu>Wj=da=VlJcdvEC*2tSkZ`kJXL_{yzrE~ zrNDS7yUa4m03_Mi-dqf`BN{Es_?~L=@uE{{7l5giT8Vpwho+4FdhV(YRH`@SuDUJn z>*#RRYna&7`4W71uTCCq?&{X-b-kvK(B%)GZNd6+KW;{x)N{Xr+Txi-$*lTV7H00) zS_G93=dUIJr(*0HW$k|0!;B2m+sWFBe`bL9Q^dm#`|L$csy}(C3{sV_BEf#zYa7q0TC=L1PdqV#sq?;9h?*Nud)XV3DB!2<-Y{OQWjDtQ(FW9f&V3*9IR|C|0SM!dWi>IO@ReQdqBuG6njZ>4>#;sNt&~< zN71INDfbZQlz=1$4?SExSNAdV>H3|j*O(NBiPWuJDA-W0u_|)OCZ-yC*Y}}`-$wo~ z;{|EpAFr{-$@t8htCEuzX-u9KTEg9T8Mr2+_XdB1E^jY8f|rTR@xdn`O0Rjv zJu7U3uT)miv))p%D?o@O)}YnH9i=xnQKM+|q)MtxkoNV0JMpK$RvCx(eI2b4A?Yp9 zXMt_EK>2IoI#nUyz`+#besN`39w6SVy)nz~c&_0CLKYW4x`kY^7v|gTFJLPA*7u2E z+$^?X%fINUc?BNTVsK&&?D7u2yf5genL2Ccu*kmRgX>bnG|^SmJ5g+Qv{B`aH%|$B zEUN1OLUOCwBZyC2wM^M9`V`=0?Lg0=`>lbc5>>N3sq{LDq!-EVoF)9R1vsLw1sb(T zYFLhRdYE%fxM^BdbWL5r{COHuWwn@YKGfAK+B~LhrkGPs?!4Ue{8iHS>>j5Kij>ou zcxO~vn~=!xt+XBqah|qI$x+w5vi>E&z+OPf$6{!Tj`X28rf2nG!n=uNJy;{@08B4j zJw{eJnb}IF3hV#K#(nB31hjkBn&w|CwD?bZDPiK+afi{E+4@QbHPBe4K=b(x9{*(tvprqDdy7BK6gwh2exLo`Tq*9kd)*k*L9$ zEaDS0@}s_1MSHzjq$zqsUEO_?q`1_*3V=aX^T7~TN&{D_$~=Z(3J=T#GhL79BP4m= zMVO!992+J&o3`o_fUGm-JK~W=uO-Dcp_sh36n1PX#YVXnDHZ+qd*tQx^F%?GtESYL zK)9-y!lai5JpW+QkB2mu8cKani~h+zZI9IGVz%PiPXBPjnsTs?;OcTBseDe+ccL5^ z4vl5Fl$j<7((9#7$X!l=?sE#?g2Zf%UA4L-eYJyqEMeStKoSCCRtlq>Cub^}**@uT zAM2m3#9{3{baB`#bRMY75b({Cv3vBNV)A^=Yfy=a6GJE=(e=Ub_T*-u=1sMMoa;5P zvb{UmOKgqY{J}X_XcC4n zb83;#0$pE2@DW~k(O)T&MW`lW$?**yA8U*b&#(C>u}9icuu}C6d!2L@!U#f!Ey^IV zt*|Gh>bX%)#JSlXRFlK^-~N<_S|8lv9WrAkg98o%z~6$QBQ59~ChB9nx@6#f%rzjh z;*s=T(z3uOOc>LPgw1h6kqKbXKX{KmRTo|7nj5Xcvl;X^@n0`(!v?eaNE1xUQA4{1h*e+DAGH!E-8dB3iKMxE$`dCE ziw42~EKSS~9O9nuh2Iy9F5zWK$c=;zx^U(f$p3QDdGRxCt4Zv3efE1GliwB6ay7V| zzEBSyS`PsNEi=qVq~cMOn`hzY6*l6OK9QIh%;b!ByAgIbO|~xjK!&zl7}6G~_TJSM zwgn_MN5QZ(k7F9>4Flp1^>MbrpmR?}_+Q=F9yvni?WL9wT*CGB8VRAvb`G zUvdOx0SAqG(yW%9>?cnMv=My#w{-ztPJxWyw3m0R41VsF-&K)!gh=Zxkz;#TtQ8&U_ zemHE{=-ia_Ywm{#=V(E0B23Pm;eyXFa_6OIGu^LFHyP#9^6LGWTWit~U{9FjTSJ2Mb0Pe@e*>94S~fO{(kC%`I%zcBQUgRzU+jhA8|m9u2r7 zRfzuYx_#zKy{YJ!YKCou9(a*XGth`tgoLr2Y7V9zTD=WG@k5YzKNjrdz;(#+D&qY_ zpDi<|VJ7qvE4VKk6%P#HB$Om=2(fs1zP|}E&AtJN^j8u1Mh@0^3Enr02PLXM9qAR9 zg?Nn{xKlW}DKlcW(gN3^1q`h&EU&88Pd%C;L1|*9Uc_Y9fCz1>)eTGBO9O@owi(~6 zLEw$Jvi>RWmO0J#F^aRoe+3SYu5XvYB?D;sNVC8wAlvXFW}^Xa9@$u%o14-7Dz*9$ zJCc3@zOBmZhOU`lQzkrP6iQvTE6U7myo|y=is0gx4(K_qNv7yAZYkbq($P3Nc`J#5 zN&c5=q&I@X)M2P^U*XsC_Cv5<8gA(_{-mFNeXy297xrY-b4Q*oX}2j6A-?tk2w&J%$><2v_tSxhmzx<8kpCmdDdYb8*<{EeWjr8vT zZH?U>W6hh+GmUpAhKs$*nYdM!A|gd>7gS#t!p$Duc&^jE$da6e!}H_Cco6Y7?*I>5 zAJ|lPG^!q}RA+xL{MS#mBDROny{oifSIlRbN4K}YeF^}Ay?->zXJQRTUpc}>xCaVg)os+m;@G?^5?{cyBlEWp=$9zSx1OpdvZyHQiobUch-HBt z8@Nw&XE(>0zx-odDx%G0|F~xQxtRYMhJN8965xcnKBXM@x^b@5NvBQcXt2&$GE|-< z@`DLblRyRtdgmxOz?>(WS(U$>zFM_eyC6ieDrFoFqXRkcGUV(xWXEH=J%}Bl`CKyb zaFKWxr3R?^?0t_U&d^+H43iw2*@7a^A*Geo2m-br3mV!kcIA#o<*-3OrFxnm_3XVU zC!vo_XcvA=UoIp-DEQ0qpNgc|nK7rAW5#ojz)64~e2LRX5%uLg_f7zx+zn|hT%Xz6 zvGk9xWUcc)0f`n-srZeVN0hvcUhWd^NU^5|-CohEpH(@+?xwB_(*^z?#}jY;eP8hm zIFO=3O*6>cfR(J7gk;>tAuHL4`yM`R)(x*J;dED z$;Sbvfm}9)T)|bZ+o2|UR(9-4uvRGYv-@ z@^^!Nxq|stlVLYt6Xu6v*A+Frc_GicevglFBH-2S1eV(6d)X{8i*Z8E2FNOy#@fkB%W9aGaSROk9Q}fVn=k!4Vx|UMBc)oRA>4q?>mg93cWu1XYJh z@F#2~itCi~lMX`F<>CWQ3fGOk{otTnJ+N?__SF5OwVV`udu&PmN*n1pj$&}7Fsak$ z99_c6BTMR|>4@96mtk0!+^poR*9;`K5O> zeMFmWVU2sQ`oPHk=7^c=mlzv@hM=I9-5-T#TzK^HfQe;SvWS2{*dg3iXRp3p{-&MM zux4J;r9wGE0I!M>DSvV>LnDEQF+(ZQUZGFg968gx_>-J>> zKGF832xX|xA!iSM+iX-R8_RcVKfAe&lS&HZCN-9v*isRO;BcI#6xVv*_AdVJS}m{& ztFH$N((-pgT3s4qhieVEJi2N*!L;)J((JL_0P)AkaEP>BsLahCnIDsVw8I?i&(gkclNWxaXVh@Hr}m` zKiId}RYnZ`SUYAkM2gIrSQ!op;A^{$J*J4+OF=ty+f#}D_?!bA-%z*k<#nX6!>~NC z8bxxy4mM8%&JhBhMBrkyT2_|CH~KwC-&nr`>-4X_`~1el>ry2jJq@=rzg1G>bSNv7 z>cpO^vvbbFILqOONc2C8mG%mI4K#G7e!bVC#9%VaYTq!W6sYm*HcR!sY5DtyALuNo z!pM9|Go$7M_Ta}AhOHbc{0L*r{*nj_h5I8`Z!l$xpUY}F&NKnWVUJlarB0(=wT(bO z-07<4VDD_H7Yu)s4EMid4xwa7HqgB@6b&vo>wiZO^3hNd;H;peXeeFu|AP_aLUjWh zSx_*b*tu9Z{xfvw*3og>;6V?Zsh{0Y(cp^Qo$6BHO-S`-Q({YI8=<}zQEwPxlcX28 zbP4=;ghoiIT)cE#%BTvHDskZy`U~#cyphH2_c6&&i}miu&WWhb9Xp^?lUDuPS<^m0 zAmBK{kgy?0Qcb-EoqMV)jwkrKJ-Ps@{AFZ9kAnYoWuTN%=qoTdPAaBG(<^)64gy*iH#y5{>TZEvMNFtSg# zZnTcYa(V&UY;?22Vt0<^=xCfsR6pyFW`45hyG(u$;I^;he2fyv#~8o2Y$o!ZO81(Q z^HLB>`^c{BI=*XS(#`Yg!u$!a&bg3tYHOnHwaIk}gQ8;!ZU4Z$622IK4w8s z*ubKcH$glxNylHeqF6AnI(fO`Gh-i*&?P-|mc0QWURH>{lG*%;*uLRfUEQ=Sg$Fjt zfbOtso?NhJuCR%u@i1x*d=k%j@*P@YHaxujp?z^Ou5+R3#>g#E#*f#?!gsW%TJiXv zd|G%hzJXr>#=xPM-2Lmt~Jq-HXPvbKQ3AN&s6du6%1EMw(QG)y_b2{4)<0 zwE+e*wmG_aC(o0|5wbA%r`!zvS9n=|$Epk9FxR;`F&wmkbZ5@ahVZvX6l?yuDN?-| z#*PBiFlgxIO^|}i1o3yGTGS1T$&!qc0>;PkL>uqy;u?DiJ%2G+tu=j=RoZsD{#Ss3rZ4yGAindS@slSaY)K>l z(aN*=&qTSU@6xQ}Y6m`awJpQUY>V3onMOA-og98kOcA;jl0+^R^E!bgD`;toG+5C5) z-YHCpdv#~gIe*=u#)|WsoKtqk#T+ug6=O#Oy{aN(wq`a{GFd&g1fHUmZge9L4*_nq zu)8KJ-Hl8NSC4@rjxn`W-_j5RY+iZI(Go=_wOOGS zQ5>QT*2|W&w^>V0e3oIi?#K@)W$uvljSLcBY{O_;C^ZbwNBJ(A80j*aZ-4?oNc~WT zr~YB}0V%#L)X35NUD#CQrSQZ>YqZoL&p9+&s7=x(IMvk5P(!i5BGkTheU;QIRw3kZ zuzT%WT+CmzL>oEk3}tC{GuSiCJaF*LIKkyVtZMp%Y$V6yW@b4N*B_Q$oHV4mUX!w&S zu`gIN-N+adv_roohopA%Bdz9fut+qf&TrBpl~Q^{Bp9W^?Mo#jTOl04h5wMmv?SF< zjsTsXFzJ<#H?y@VX-@Vgx(X`}Z1vw+Sd?`4t_;IYjgCp}I{Ddo4*rju+luH?~Kj1A~Ekxo}WPlQP=NLVZrf3KO8J2*7BR@5#Tb!r*dc{JpzFb$bYD{JLK*h!B_`S!#v9MAiaV;I4{`mb`cH3!K=obti z`z7%^occ=QpGjeWT2HEIrGT)rPy#GmG*2EF*F8LhXtW^LAF9XICi%-oJkE&CBf?rn z3qoxw36Xngx8l*wEz0jpy-f*TYGWAV;YiaD#z9{a?XrjK_4IN?TJ@aoVZH%7;VxFm zC|0OYe$3y&aE`!}gA|D$zLTOG*FtN)JEQx+qR{j;5GyeNBy?YYkw{KLPJ0n^q)dKe zCuu$D%t|4+Auv=wxf>G>fdaB*d)Vz1<(OwRUR;yf%ZXlLro0->GJeS(LVRK+Nd8sd z0ZUkz3W2IKyBv-dXuMejtRnIhXoH>looH<@U|w5yxamND0?4OBtPLZQbG4Beerv6L znhGgR=C;uTkR~T_I0nAsr=KNKboUm==HYvCVKEiJ#{9Ke2Fv~a?N#T)!`j!3Md=## zN0LGJ>i%jECd6RMbn+Fok@G=>s%13*iQOZM_N=oKwZuLW&f>zVuWv}@J)Oerps=K zGW;62PHXTU628+onEo2wqMLd z1+|#snePzyHK-)`0_Fl)r-P$k#lBw*x-q8;4Y%jydqz)JTbnVx^$G6V-7b)mp}G9_ zUJil?fcIPT+(-QY1MKetX2Nr{v`s5Y^7-01G0BqVq`@@V8s?bBNS7KVvz@0tl~);I zhYd;Au-0$(OHh~o{@d1~17xO@j`fhss!OMbk9QfSHO;XBu8tp$oFol8L9pTGfIO-8 zxPIASSl}Z~eIJ%k7kS4sr5zG2IF+z+vk}}I0MhrNs~dw$5^fa0zLfwb$?mV|=C+M( zH~I@95K02xmq6sk;q8qEv`4pj^TG_DYd1ZRG-%f6ijq1?n~fDT|C@lV;ud@OFO%TD zA{E0&UCk{#;TT<FlXkkUj!4e#GAXNpJ$phK)i1rJGEr7nFe6sr-}CQZEWTdPEJVD?bm zUiPu*X`H+b@1EVd>O>Sbz1@Q&pAYKk{sR^q0EbE_Q;CEY+<$H@`@`4!U1vXneoOfC z<|q45Js7j==%#2{VwpciC@&`t&g zTcJtNL%xd&2V4jL2wK@nL`#)Kz6fu^HPy-)E+lF98R)Y6crN_@ZHL`e zLl%1VVxviA)_Z?|)(3&nPmJz_l#~847|pcqnYh}N8|txA8VL6bmkd;H7B@Rl9;XZU z(&0qFNr>pu+eUB|;l%rt@eTSQ;<+R%(~9`_^0v+jr=*Rh)d@=1%58)JKr|n0*LDgP ztet92m^EeYkg;9l{jJeWQzM6Pi(V6TENobM8e;BpPD{(a#Y8R+=Z=lKiB<5~m~MyL z8|?EZUQS|mqfcc4OZ5A%!L6bjx>tx9jn8K$=*Dk9&to2LFA8A=T|CL$Wm6#U-4emw z)T6&4gzIttmXRXzyDdss0L;dxK+0n(pFdm0w3wYJPBSMoTKHuqviMt*ROg1ewU^U+ zQ?U{D+q<0!=c|m77^oh~JzZE1aX`|RC*o++OgQ^8q`VmCAjz?hnYU%Y#t5FIcB1~e zG4*Y;z4O?9^)JW^i{_J^SNQSNa~dD6>=hON1#g;K;z%Sc+D&rG4sbtwPtelIte-VP z{0N!q@sXm|NkA&Pl?$8JcWk5YLDp5*hu5FDH}e3GVJ-Ne_-;~>Xg#@sDdPPX3Sj)+ATA}Mcpyz^#y$dHMVt=vp3eZuVNF;`Dr{HN;Vbd(@GBWE z1a}L7DrF`jv)?LJQMZTbJTJSutNNBC%6KAs3KyX1^5UBZuv5zHNok$9;4%Ud?Ddd2 zUiwoekw!vVkP68~g1i|c6dl1LyU=7mYXM*S)I_hAsW~gx0Qkeh5W;s3_lZ%ml;i<$ zOIz|4sQDwu(dxS#(N}M~##JpVQ;k2zRNipOD`?yT~EG=C#v2-mjyX0y! zO;23p)Z4htOrsAP&%%PNuOkJxUM0%iEWVDYu+30XN=vD*QV)Ot<1U`N^3QJ24FEDB zKQ1>bkdz1(1sI0}OZUHCIUG1kq;fUXzYPsiu7-Ix2LDeY^S`a2f2}5{ z5bQkvBT)YXNrJORS`xwj+i)ODBKV&q{}rmNAQ3@$H`ISdJn8>5p4cKGN8T&KgYFd( zm{o?Vp@w6S<5>|_JhBFAIlABTTQDeqHDNSG(t-6TKt_Lb(B4pM6oIZLT+e`QYMI#tCp|FdR9&vr+Q%BKN7LQubEe z3{J|u@e?#Kc^A$OP}m63p11*8ox;@OWqI7D?|fZe8Pu$&2-ng7E%Nc2-38a%VN;TasVgs)dAqUSK9GP12I^)9k#SxJ)O+`{x>Y1;7@2|`(k z;GeJDim1Q6vkkI3We*uoU*lB-uj^~(8t=sP{0pt?N!{z#s@7?M-w~c*FJm>h54apR zVYl7GOsTmrTZbOecJ#+Ncw|GgGnKKH(R{&V?UpgrI7Y8nSVO{+7I;(f<7Z4 z+rma_P{Ff?R)UNOpN4QII?+rw!=o#r_*F64>3!c3bD!(+i)kTOHEnW8DfmthnrlS2 z$`D#f)vIAdHe1UHAbyc?PStp6Bf4*6?H_qGi-L>63zEzyB}|HZHj^-MGoY@QjYqZ? zjZ<7oxo=BIEF9pfJ4aV&paZY(;g|+>H3+fGAIBbchuZeRw%}VXOs1G4ll)V*P$Zwr z^7#aD`DyJBNZ#cE(I<2O#Z&DQcI@w~Tz|vs_$qQZ;b%GkhR=P^x-p}P$b|hy;?Q!_ zP{01UfZex$sFgjBk&vfs^ourc`f|5>b76%Cc_3ZLnPwGwT&}V{b}Ukur6j&0eV*uI z!>50d-fnPMA%lZQB{Br$-K1Ij2#`Iph)UnZP`^!iEHNm8Rnss`G3iRPJlSWMpO(%& zP#iGUw%ZW_fd0n~7RhFnI>`e#U6_LOt$SfXse1iS+v3r#-`b9r3rL9U?M|hBR-ePK z;ZXr?@<_!P2!V7nmyCisfI9k4(I zpa{x<<-Zat(f)M=Ui0WMqaM#nK6hs}fp3yJn#K|UO8b$`c8tOvu#KO*{4_`K&>=zT-w&)N2c9Yb5=nAF}$>8P{ZJ zVj(Ah%3+B%X?%E1HW{BNRCB@?HuGXfm0{a@eg#%~;^}g3Eugrv_(n)}@5<6v@Rxe< zi2|tFL$xdii_@V4zPG>y-X>*gBtVooa11@A^SAl5T55_fD4;#r)xg9Yr+~-28(X69 z1+ol!%7k+5>UTPlXC~K9I?t)0icvq#uWNn)kd?YcMiqVfGS-6m4d;UMlCG~DS^#~e z7|XL00?wD^=75)zSB89y$6@}7*uVF8|Ng%uEA-?SBpcE@x#M(n?ktK4c4gJ}BuK^< z5yza>cZ5;1cC*)1L#ih!e+~9K@(|AwB@^Ym0e?rE$`jPVY=tqQE%LC)YNh=OYfvqq z&!h!r3|Ut-1oGjt@tydTJO!>prW?`VOw5pkFv1PdfU;0u4a@zmAfvceH6bO zw3};VD8oZK{!O#*E$~H=FZ%cQ+H5)?#Kc?swDCYfQ(?@Jt*)?G{^v@^rP7B5)j}6a zNIrJ5Et&U+x9D$SnE)j>qW(#`{>+F6|AO(%p5G68b=q|v1aKh*euU*rR@Y^38a@DUO5md52U zY=f4)(T8PBB$(I&?KS@ zKttH<*&n&N>Mf?%r+6(ve&jFru(MPh);e0j5m~<$Kmbo3zrHQ6h?E=Vn5=4Fa_S3k- zxf&|u23TnGeAMi*xQm!>xWJ$b!^Mcl<+yL&E^bdjXFx_&t$`{WRk(Fneh~Poz!|t^J&IDNbowd6;ur+F1rrD&vMEeXMnr>v-p*mVtXD zJ$SZVC2|j+$lu5L9a}Hk><)r7Hb?$DYJZd;d6ob~DKZBMyq+UKyzi??R<35H!?}s* zLv`&T?6x@XpwqWh7GB)*RUB#0Jc^8{VMDxF6nV%x|5v9wK`-e?ZN?COMB9%X>y;Ch z_*@F3s4cCu$y$OeOJ0ZNfGD(*Foe!u@W{=${by;CQ77zQWZQSyKH4}4-AQM+)>U5# zAirAE#?hB`Bbzrs+-$pA8JuY<)}~X=75E7DX715d-O%*{kd5iZ)N?XAnnky5E9&3S zg!lRr;z|9|ib`3`@QlT|+{VKVD){G+4hl0fUqJk8CfIkp*A zh~J?D#MafqolgnHm2Hz@|5l6DZNk0&@U6~@NkUZ=3;Obts{nrjHR?@OanN{zSgLYYc&@QM<|VabD3chqx;8J|YT?EkKggJ954N|EM{$X|sB%^HBlqOy z7A@SNJ7(~ot?i8j_Q>25lUsfLTg*7@@59*>d?sAIyg+ql6mBbo$o|dw07a@v=C=GC ztl1|(0S8R+agZ~$e3D^8O)h=iw{@!S-!JQN>G^p7&T>7Q>wF;iG5kmWS_IFb2=$9n>;_XiOy$NZ%=jP!fRZ%ND;y|2Ob#t8F+OFRxAs0)e#8+1SmP)C z5Zo^EDF#the$QL8B=!>j?(u+`itwem%f$-_bA54wE)WVZwIxC3dAda`JK>^+F0Q{J zTJU-_#ClAn5F7YBlHo?Fjtc*>Z}aK$&;1Pf(ms7aLxm_#^|BmxLn9bQ)U&4rUBe8X zieDEg3nz%Lw#9;YPY37IjKFU3IENtAean~@oNloTijyO8dB#)!AWcoQ+Z5n4yck%H z82Kd4UsYMy$#*6*00O?p zPu2ng&3lU?mi^L@+NJAnW*$xmoS-ebA^sMpjGY=I1xMxM;#iRLIgV@A7dW@|%JhE) z5*HWnbL|@iNWSM=!#@SX%K;Q_{YHz-^S_y2Hg;~-|JrZ54o-w1w9mla5E2Z`W0%oA z0%NF#BR(z_nh1v$8)!gMdUc8BGF}Q&=~vIpK)_tSyKZfsxbdIli2xqLX#y)x#vuZ$ z(tQM5N-h1NXZx-vT*&`tpne1R9dzB_$Lq0v*%3XX{8!Q5e)Xo)%r6-F z>@`4Nk;;J0!eaP)e!pIV^2jwLtyUR@Acj>Vf4A$fntQuTFNkl`l-8w7^(TVX9 zV^cs_u7F1tJ}w2kakkDR2N(l}o4U6c?4)epd3Z$1>X-`KC9UQx+Nj`i>37#8LJj0} zDjbtdnr28an zq1rH^@gwuqO1&s2V;12Q=rv|N2Wv~!ntmvUhQ6e5+eCdo!T9HrTQtCI9rMUdhZZX)egNhBdvdJRv9=ue8Mo!fgfQR> z`o1CE|HK^Y)BX17{rw|gRlim(x=8nyEpci7RE}2D)*I|1w=7fw3vnTD2nJ1$%^mC%j15>*b^^II>;O7m= zc`~J8UT4NM9p6VAKvXB zcX*peSFJi1SeZr4$&wL|b$_0Fhvq=K+|MoH*eZi+_S;l?q~zW`9&|H0paOvI6UiY& zb?5JAEr*|r^8M#=9@7y?$8EC%F3Ie0`L$me z5@fX#3QZi%i~ZZ|Cd2 zqe(&bW0r6dCSaqxnb&>u&IQiJrEM!1b;?4yPBnzHI3*6UwV)WxRwzAECJxaBBuH2! z+0iHm#?@}h2>}i`LSD9tsicsCSlBa90n}ar;!9(GkmR@}dxl}ik_e#wTWmv!dvOO} zBGEewndf3sMzEgY?d+8l%G2B{;q}7}!AiFZEbsV!D1ObismEh60@P-n%EnENCak~&&17}PVG(e$d>pHgYlCDR&?&dJy9v4 z=E7B8ziVD4O_uEfNGBtN;$Z%4tb!tIQ^{jOCJ%(Qv3iI^u{O6cD)X3CkTX+BL( zuT73Je%IXpWmtra_<>Wq?|tTjYAy-qET4($HQJZZrQ&`_t_JUchU3bgV69CoU9N5Z z)1RVJ2UXdfIMx?{0B_GyS+@8B?u_(}5YlxQwon{5Skv5Sat&4!bA@iur=bZw(!<41 z@=k0V=~{>hil0^)M-AE7j2Cxa$%1TEYZ3UCvfFK(3pvINeebSE8>guu@s(sE0vB}y zjTOyQ9p#mJvgPl?eaD`5M0R&@1832;ck!Vz!rxO$k_ZRbtG*h@MZ3MiL+ibY%Zy?S z3|GH4?i{D}!@X0hQUB)}{-*w!F!n;uF#e|nDLRgV*^I0I%-v|Y8Fu25q1}QY_U9fY z!vVNlLm(Y?a-I<(wuuWi*^6%2H!5wTb2j_OH;O@_n*ATzqalU06Ak%JW)@jn4Z9fd zMsL^wJt0DX1giBLVuz}Xf^^4^eOa+7lnRM%NFjx{A%kHwMncK#V+wLv{@TsrSU2yX zOGl=-mEF^#2qUvqXBAlGP%f|)AY$fJ*-d;f_n&(kP3$4G0lT&OX)AN(xK znSSxOJ8K_8q5?x>Rzg`tI6Q3^BvplQda#bj&1@kKDnk|lF}g`3aj0e4Avp! zKMnVQy`DXuZM~TW_11O0seqK+D~F^*7NK8l-6@wgrH>90u+6rI!K+;GOUq8Sp}J!`~U z{<(8YifoikpYA5^jjJEZ`KxC~t&3mk!}{0!sLhWjmgOuN;bVO-=-eON(bO~lGLY2^ z6U{R#8xvOy?`MY?`R@-T%7DPfeP-!;!*0w-*b^F(`Z&+13dSA(F!MiXigJW8AA~yU zAwunZ7Ry=mNzyb0M)uP}pAj4A&Xi6aR*7LKMur8s1$jd4&)z-#a4_43|Kg)W1X5R9 zGxMaRcN=3=iCfppI6Gdk!omZXI|1YSw{L)s5sZufpMvp#{!y?Uf`1XH?T2qhL_nIJ zZ`dGp4CE*R;QQJ)9MByTawP$9^Wh)bD2MFE0u;bN#s=~EAy*OsH<^&JK+l=T)ylwJ zxqoQ;DRQ_Fkn-PsGLR|_$|D2>4;L_46a@pMPme+Z3Ea>8S4dz)A%}$E;Q>Z+piF`S zSy5mifyJl)3Yi=z1Calw)*>`0n4tf!jOz?)vQfH8=%IurMJbV{bV4XW5b4rEkkA$B zVn}Gx;h_jbRH}4PlmJqtS4Bb-r1ut(qJj`W6p*TycjmqG&D`(bIXkqF}m>!>X`qNJgk6j6EYn877_a0tLI&xTp@Rgg_AI ze`Z>+Xevc{Iizd`hc=AwU#O%F%YrD%{4-u&;#NRHrFHK6`1--+k#hexYAPcBy8u7e zHE3cz+rCRo+_HBTZPRwBR?BYtwIOmp=lv4_Q_LLtfo-Kwu~GOLQ^`$TJ^xL|NO+A- z=dzMptfq}j+C^==So~FCudjF{qvd0vHLqv4B)DFCKcY>BsG4e_syPzy9MD^IomPfP zA?0;EEOZp|ZVt(K?dm8P1LBhdz*oxRqz~613gBa5?1&N~L{Y*&QJ_l@%w`5!)$wM0 z^M+6THa$!v2AmshZP2AnNGkG*`M$#C-3O9GiLqX8AH3i|t*Y{k1@gjGvZtAK|3doL$GeQg8MqrMHTml8ESlGt+#6TafLIqD-s1*6z$AQCm9 zT(n#Wf`l@MH$jf=hdRgwPZSu5(%_-4?G~u%RKLJI4+Cj-hjx{#R-54?;nlHq$O!HS z+|T|TIz4*3Jx#rw0nC<$V&lDERQ5~oH=oox)0r5*HLm=eck1sKtS(R`onjps`1J?b z`hfS$7v#umn$t^LbX(w9t|P8{rd;2F`o+z@<9aFS_()0Hqlh=YpQmG z9MtNE{bLe0+N)UFDnEMZz`IoXq>UcGSbCU}GudI-zhRCIdjX)`?-VgdYxD^EA&!3y zzZ3}Y_X!OOy5CoF4|{u(gaQBMBu)5Z$1$m^7#A<4VaC(H=~M&kvvIS1vy)|IobBYF zJDx$&+QA?T5Gg-2jWv-JvCc6*+k^%-~dEMxn#CNGb$F-EaFFjuA z-u=EGfldFCE=JSM#3hGew6`+Y*5mwm&!wxC5Y76ayC5=9j(x`no_3+j!*pfmGVVQW zXLEJ@_q6o2chUox+JZaoqzU?cy|Sb_xa$3xx!6r%4nC*G*TG+ZLOzrme3Mk|xnhcP zJLHL9d)oqpF0R531>1Un)xXiIeSzi|bJ+{~##iW#^-akNCOvlzzt4r7&B_NR)rh_H zZm<)vpt{y--F!{%u3{gg)H}Q5a~^SAd(t3!72}_XW)yVpL0a zM_PgE4^%!c&DE#XYjMy>zJ0-hzcWgDfOp^y;j=eTU1i$;@f(xDG854GdG~sFJ4^)D z8urez5ePXv_<87)uiEgI9&$xvW|7=r)FSVw=I~8;9L0JW>vA?CBxnOuq zXu0K(S4;83;E?78@mhs~yC>WylPZiDXKC~*CZ*Cf-{xB0#mrC)bPx8BszuFEo+>u; zAd&$Pz-HjfI`mVr1C5F_Fv%9hG!b@@0UAnuJcygsW@B`dx83c_ywDYB))aCz(AjaC zMzt;JLa?sNPDbAW$`6=F$K!rw*Nl;4F}ElH!`tFTE6O@% z{AzN{MHkT8^PRePr!ULZOj>**%1rixgv7;G4HvxdyGv;b{Wir?)&TPUFZC&#@^f!f2s5JqwF{KH9bI zX*L&E>^*0S^%nddF;{1iLoT&lc_MOFphaKlC>|imI`-|+Bc;m}xw<*jHMNKnN(zTA z6AHS>HkscR>^euvcrsU$&8$)fG5%#-%zc8U*)*?XA5j&)HbiEHHIk+Ph zf599&V8MnPu&K?o@wJezS4xkP?WwR1a%H@GLd&V3>yR#%AX>lpdhY42UW;KrQ~t=2 zIcG~q@ZR>%!J`XWr5?3>sf4l>+w_cIIo2=A*A(Rh#*Pn@Qo9|q%CSr0C&AvZk8rQ} za`Sqri^VE=SU!M{byF$Ec}_PyVJ{Dxs{K=mvDi$`uXmexFV*;|va6M}=URO09)+3m zP1q)4s76{*DL10r9HZn5!-v>B1@CNi)S1StA@s&_z6Up8`Sfoby~KT^d+M7~*yn-4 zqGyFfpXG`CJmnBQEbqx7wb?e~dd0Y#gzna?xZY2<4hMjw3IpaPqM?nUvuUPO>r1@6 z#Q2!Vsjq7!5;iGjpzu|tABU}FNLi>c5A79gMIPCEv;~ESS7BBSwmhC3iDUAfuDRwe z5XxkSMRKacUO6GyHrLm_sP77FNlvXRAe=U4(p4!xwdn2Ygw!{B8c?M}^A+*ns zVE%=hNAPp!&yt2_u$7F{>LkTia{9G>7ONGzK!Do7b|SW;>FMb(Wct-$wv{_r_I-<| z$bN2cd-lzAWjf6{qnmLeOVZaw@Y2dw5oi(uT-_8moHOrBg0k#QGIkAmD$fX`_sFC< z(Mwg)w+HWBoB>k{QuvRkpKs+o$CMYtAc@0;+QKKb1{rFy4m7v*8D_v1}RE_0m_MQqqC=FpKm4Tn% zcGyFu&F=@h`~#uVmT+4H90^C98_jSyzjLGPx!i);KM}6DbB6qvX~At(kXniwvNCcg zBuWPoX#A-0YI-!Z4q7Kh()WT^uri8QfdKal*S-cl zl|bd{NJAB)KhSO@BP_MQ2r0u{hJA^k%#TcK(YG(GG_x!zo3Pjrd-z{Uk^KH`dN}7a zY~?`Q&c$qEY(8{G#`AI68TMAJxn}Z5lT-e2?kjybBM!U}dVXEVzsgOD_myFUh>#UV z<{8*rM4w&=t-5t%@xxc4+-BUZoOoHfoilkLLu$&54td|#Q`OzJp03KDP%@d_V%*_I ze~`D2v@f6P-g`Nv+fp2|++-+;r4uo_5_@X>LvU9hDk@uC&YrFK5x zs%)ue3mLb=>W8P-aWZL(d+y3V)?2nl70C$HCZdLnXmA2%%q<|~SO449 v_C?kZ6>>cngt^l}%Pch@?9~x$`-Y}qd1=Nd8pcnLRFqMI3JYtS=s^Dip|r70 diff --git a/Schrick-Noah_MPI-Tasking.tex b/Schrick-Noah_MPI-Tasking.tex index d5e7e57..86fc977 100644 --- a/Schrick-Noah_MPI-Tasking.tex +++ b/Schrick-Noah_MPI-Tasking.tex @@ -277,6 +277,7 @@ All data was collected on a 13 node cluster, with 12 nodes serving as dedicated All nodes are connected with a 10Gbps Infiniband interconnect. \subsection{Testing Process} +Each parameter discussed in this section was individually changed until all permutations of parameters were explored. In addition to changing the parameters, all tests were conducted on a varying number of nodes. All permutations of parameters were examined on 1 compute node (serially) through 12 compute nodes. A bash script for looping through parameters was created on the distributed computing testing platform, with jobs sent to Slurm Workload Manager \cite{Slurm}. When a job completed with Slurm, the bash script would use grep on the output file to extract the necessary data, and add it to a CSV file that was used for the data analysis. \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.