summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Moore <connor@hhmoore.ca>2026-04-26 08:30:58 -0400
committerConnor Moore <connor@hhmoore.ca>2026-04-26 08:30:58 -0400
commit73a3eb708cf5c26ddd070661c2c461c85217619a (patch)
tree68a6828fe8e923557c17fedf92dd5f2099e89ffb
parent514c97f8b31ce6b1db9088849b20b7c1dc77bcef (diff)
Finished initial report and added wall time figures
-rw-r--r--report/figures/wall-times/1000_128_perf.out6
-rw-r--r--report/figures/wall-times/1024_128_perf.out6
-rw-r--r--report/figures/wall-times/1250_128_perf.out6
-rw-r--r--report/figures/wall-times/128_128_perf.out6
-rw-r--r--report/figures/wall-times/1500_128_perf.out6
-rw-r--r--report/figures/wall-times/1750_128_perf.out5
-rw-r--r--report/figures/wall-times/2048_128_perf.out6
-rw-r--r--report/figures/wall-times/256_128_perf.out6
-rw-r--r--report/figures/wall-times/4096_128_perf.out5
-rw-r--r--report/figures/wall-times/500_128_perf.out6
-rw-r--r--report/figures/wall-times/512_128_perf.out6
-rw-r--r--report/figures/wall-times/750_128_perf.out6
-rw-r--r--report/figures/wall-times/N_walltimes.pdfbin0 -> 4323 bytes
-rw-r--r--report/figures/wall-times/N_walltimes.tex128
-rw-r--r--report/figures/wall-times/performance.csv251
-rw-r--r--report/figures/wall-times/plot.gnu49
-rwxr-xr-xreport/figures/wall-times/split.sh21
-rw-r--r--report/figures/wall-times/walltimes.pdfbin0 -> 4552 bytes
-rw-r--r--report/figures/wall-times/walltimes.tex126
-rw-r--r--report/report.tex42
20 files changed, 679 insertions, 8 deletions
diff --git a/report/figures/wall-times/1000_128_perf.out b/report/figures/wall-times/1000_128_perf.out
new file mode 100644
index 0000000..663e28b
--- /dev/null
+++ b/report/figures/wall-times/1000_128_perf.out
@@ -0,0 +1,6 @@
+128 36.853115
+256 73.437282
+512 125.773081
+1024 224.869322
+2048 451.077935
+4096 878.001012
diff --git a/report/figures/wall-times/1024_128_perf.out b/report/figures/wall-times/1024_128_perf.out
new file mode 100644
index 0000000..c3741fd
--- /dev/null
+++ b/report/figures/wall-times/1024_128_perf.out
@@ -0,0 +1,6 @@
+500 8.423848
+750 62.978787
+1000 224.869322
+1250 563.740951
+1500 903.102268
+1750 1366.527768
diff --git a/report/figures/wall-times/1250_128_perf.out b/report/figures/wall-times/1250_128_perf.out
new file mode 100644
index 0000000..4516300
--- /dev/null
+++ b/report/figures/wall-times/1250_128_perf.out
@@ -0,0 +1,6 @@
+128 77.618463
+256 177.907192
+512 283.961749
+1024 563.740951
+2048 1094.614234
+4096 2125.203878
diff --git a/report/figures/wall-times/128_128_perf.out b/report/figures/wall-times/128_128_perf.out
new file mode 100644
index 0000000..7e31a62
--- /dev/null
+++ b/report/figures/wall-times/128_128_perf.out
@@ -0,0 +1,6 @@
+500 2.330106
+750 13.824193
+1000 36.853115
+1250 77.618463
+1500 146.393018
+1750 196.437171
diff --git a/report/figures/wall-times/1500_128_perf.out b/report/figures/wall-times/1500_128_perf.out
new file mode 100644
index 0000000..42ae9ae
--- /dev/null
+++ b/report/figures/wall-times/1500_128_perf.out
@@ -0,0 +1,6 @@
+128 146.393018
+256 239.244040
+512 487.884069
+1024 903.102268
+2048 1873.657313
+4096 3687.162119
diff --git a/report/figures/wall-times/1750_128_perf.out b/report/figures/wall-times/1750_128_perf.out
new file mode 100644
index 0000000..9d497e9
--- /dev/null
+++ b/report/figures/wall-times/1750_128_perf.out
@@ -0,0 +1,5 @@
+128 196.437171
+256 383.824340
+512 704.101425
+1024 1366.527768
+2048 2808.361412
diff --git a/report/figures/wall-times/2048_128_perf.out b/report/figures/wall-times/2048_128_perf.out
new file mode 100644
index 0000000..927e01b
--- /dev/null
+++ b/report/figures/wall-times/2048_128_perf.out
@@ -0,0 +1,6 @@
+500 16.586500
+750 105.297991
+1000 451.077935
+1250 1094.614234
+1500 1873.657313
+1750 2808.361412
diff --git a/report/figures/wall-times/256_128_perf.out b/report/figures/wall-times/256_128_perf.out
new file mode 100644
index 0000000..9e9dceb
--- /dev/null
+++ b/report/figures/wall-times/256_128_perf.out
@@ -0,0 +1,6 @@
+500 2.773811
+750 22.337049
+1000 73.437282
+1250 177.907192
+1500 239.244040
+1750 383.824340
diff --git a/report/figures/wall-times/4096_128_perf.out b/report/figures/wall-times/4096_128_perf.out
new file mode 100644
index 0000000..dd28d15
--- /dev/null
+++ b/report/figures/wall-times/4096_128_perf.out
@@ -0,0 +1,5 @@
+500 30.306277
+750 204.313462
+1000 878.001012
+1250 2125.203878
+1500 3687.162119
diff --git a/report/figures/wall-times/500_128_perf.out b/report/figures/wall-times/500_128_perf.out
new file mode 100644
index 0000000..bee542d
--- /dev/null
+++ b/report/figures/wall-times/500_128_perf.out
@@ -0,0 +1,6 @@
+128 2.330106
+256 2.773811
+512 4.442273
+1024 8.423848
+2048 16.586500
+4096 30.306277
diff --git a/report/figures/wall-times/512_128_perf.out b/report/figures/wall-times/512_128_perf.out
new file mode 100644
index 0000000..9c11d05
--- /dev/null
+++ b/report/figures/wall-times/512_128_perf.out
@@ -0,0 +1,6 @@
+500 4.442273
+750 38.883541
+1000 125.773081
+1250 283.961749
+1500 487.884069
+1750 704.101425
diff --git a/report/figures/wall-times/750_128_perf.out b/report/figures/wall-times/750_128_perf.out
new file mode 100644
index 0000000..aaa0a20
--- /dev/null
+++ b/report/figures/wall-times/750_128_perf.out
@@ -0,0 +1,6 @@
+128 13.824193
+256 22.337049
+512 38.883541
+1024 62.978787
+2048 105.297991
+4096 204.313462
diff --git a/report/figures/wall-times/N_walltimes.pdf b/report/figures/wall-times/N_walltimes.pdf
new file mode 100644
index 0000000..28e8c02
--- /dev/null
+++ b/report/figures/wall-times/N_walltimes.pdf
Binary files differ
diff --git a/report/figures/wall-times/N_walltimes.tex b/report/figures/wall-times/N_walltimes.tex
new file mode 100644
index 0000000..f71cd0c
--- /dev/null
+++ b/report/figures/wall-times/N_walltimes.tex
@@ -0,0 +1,128 @@
+% GNUPLOT: LaTeX picture with Postscript
+\begingroup
+ \makeatletter
+ \providecommand\color[2][]{%
+ \GenericError{(gnuplot) \space\space\space\@spaces}{%
+ Package color not loaded in conjunction with
+ terminal option `colourtext'%
+ }{See the gnuplot documentation for explanation.%
+ }{Either use 'blacktext' in gnuplot or load the package
+ color.sty in LaTeX.}%
+ \renewcommand\color[2][]{}%
+ }%
+ \providecommand\includegraphics[2][]{%
+ \GenericError{(gnuplot) \space\space\space\@spaces}{%
+ Package graphicx or graphics not loaded%
+ }{See the gnuplot documentation for explanation.%
+ }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
+ \renewcommand\includegraphics[2][]{}%
+ }%
+ \providecommand\rotatebox[2]{#2}%
+ \@ifundefined{ifGPcolor}{%
+ \newif\ifGPcolor
+ \GPcolortrue
+ }{}%
+ \@ifundefined{ifGPblacktext}{%
+ \newif\ifGPblacktext
+ \GPblacktexttrue
+ }{}%
+ % define a \g@addto@macro without @ in the name:
+ \let\gplgaddtomacro\g@addto@macro
+ % define empty templates for all commands taking text:
+ \gdef\gplbacktext{}%
+ \gdef\gplfronttext{}%
+ \makeatother
+ \ifGPblacktext
+ % no textcolor at all
+ \def\colorrgb#1{}%
+ \def\colorgray#1{}%
+ \else
+ % gray or color?
+ \ifGPcolor
+ \def\colorrgb#1{\color[rgb]{#1}}%
+ \def\colorgray#1{\color[gray]{#1}}%
+ \expandafter\def\csname LTw\endcsname{\color{white}}%
+ \expandafter\def\csname LTb\endcsname{\color{black}}%
+ \expandafter\def\csname LTa\endcsname{\color{black}}%
+ \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
+ \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
+ \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
+ \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
+ \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
+ \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
+ \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
+ \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
+ \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
+ \else
+ % gray
+ \def\colorrgb#1{\color{black}}%
+ \def\colorgray#1{\color[gray]{#1}}%
+ \expandafter\def\csname LTw\endcsname{\color{white}}%
+ \expandafter\def\csname LTb\endcsname{\color{black}}%
+ \expandafter\def\csname LTa\endcsname{\color{black}}%
+ \expandafter\def\csname LT0\endcsname{\color{black}}%
+ \expandafter\def\csname LT1\endcsname{\color{black}}%
+ \expandafter\def\csname LT2\endcsname{\color{black}}%
+ \expandafter\def\csname LT3\endcsname{\color{black}}%
+ \expandafter\def\csname LT4\endcsname{\color{black}}%
+ \expandafter\def\csname LT5\endcsname{\color{black}}%
+ \expandafter\def\csname LT6\endcsname{\color{black}}%
+ \expandafter\def\csname LT7\endcsname{\color{black}}%
+ \expandafter\def\csname LT8\endcsname{\color{black}}%
+ \fi
+ \fi
+ \setlength{\unitlength}{0.0500bp}%
+ \ifx\gptboxheight\undefined%
+ \newlength{\gptboxheight}%
+ \newlength{\gptboxwidth}%
+ \newsavebox{\gptboxtext}%
+ \fi%
+ \setlength{\fboxrule}{0.5pt}%
+ \setlength{\fboxsep}{1pt}%
+ \definecolor{tbcol}{rgb}{1,1,1}%
+\begin{picture}(8640.00,4320.00)%
+ \gplgaddtomacro\gplbacktext{%
+ \csname LTb\endcsname%%
+ \put(1181,655){\makebox(0,0)[r]{\strut{}$1$}}%
+ \csname LTb\endcsname%%
+ \put(1181,1361){\makebox(0,0)[r]{\strut{}$10$}}%
+ \csname LTb\endcsname%%
+ \put(1181,2068){\makebox(0,0)[r]{\strut{}$100$}}%
+ \csname LTb\endcsname%%
+ \put(1181,2774){\makebox(0,0)[r]{\strut{}$1000$}}%
+ \csname LTb\endcsname%%
+ \put(1181,3480){\makebox(0,0)[r]{\strut{}$10000$}}%
+ \csname LTb\endcsname%%
+ \put(2044,450){\makebox(0,0){\strut{}$500$}}%
+ \csname LTb\endcsname%%
+ \put(4378,450){\makebox(0,0){\strut{}$1000$}}%
+ \csname LTb\endcsname%%
+ \put(5744,450){\makebox(0,0){\strut{}$1500$}}%
+ \csname LTb\endcsname%%
+ \put(6712,450){\makebox(0,0){\strut{}$2000$}}%
+ }%
+ \gplgaddtomacro\gplfronttext{%
+ \csname LTb\endcsname%%
+ \put(2899,4115){\makebox(0,0)[r]{\strut{}$L=128$}}%
+ \csname LTb\endcsname%%
+ \put(2899,3910){\makebox(0,0)[r]{\strut{}$L=256$}}%
+ \csname LTb\endcsname%%
+ \put(2899,3706){\makebox(0,0)[r]{\strut{}$L=512$}}%
+ \csname LTb\endcsname%%
+ \put(4661,4115){\makebox(0,0)[r]{\strut{}$L=1024$}}%
+ \csname LTb\endcsname%%
+ \put(4661,3910){\makebox(0,0)[r]{\strut{}$L=2048$}}%
+ \csname LTb\endcsname%%
+ \put(4661,3706){\makebox(0,0)[r]{\strut{}$L=4096$}}%
+ \csname LTb\endcsname%%
+ \put(6422,4115){\makebox(0,0)[r]{\strut{}$\mathcal{O}(n^3)$}}%
+ \csname LTb\endcsname%%
+ \put(434,2068){\rotatebox{-270.00}{\makebox(0,0){\strut{}Wall Time [s]}}}%
+ \csname LTb\endcsname%%
+ \put(4309,143){\makebox(0,0){\strut{}Matrix size $N$}}%
+ }%
+ \gplbacktext
+ \put(0,0){\includegraphics[width={432.00bp},height={216.00bp}]{N_walltimes}}%
+ \gplfronttext
+ \end{picture}%
+\endgroup
diff --git a/report/figures/wall-times/performance.csv b/report/figures/wall-times/performance.csv
new file mode 100644
index 0000000..eced4b9
--- /dev/null
+++ b/report/figures/wall-times/performance.csv
@@ -0,0 +1,251 @@
+MatrixSize,NumEigs,NumProcs,Successes,Failures,ShurFallbacks,WallTime,TotalComputeTime,AverageWorkerComputeTime,ManagerInitTime,ManagerManagingTime,ManagerWaitingTime,ManagerWriteTime
+500,128,2,128,0,0, 6.307289, 6.291920, 6.291920, 0.004279, 0.003188, 6.299307, 0.000481
+500,128,4,128,0,0, 2.317015, 6.883635, 2.294545, 0.004316, 0.002636, 2.309707, 0.000324
+500,128,8,128,0,0, 1.003516, 6.814900, 0.973557, 0.004691, 0.002351, 0.996134, 0.000312
+500,128,16,128,0,0, 0.914593, 12.562072, 0.837471, 0.006041, 0.003258, 0.904444, 0.000813
+500,128,32,128,0,0, 1.266428, 26.445200, 0.853071, 0.009592, 0.011287, 1.233385, 0.010088
+500,128,64,128,0,0, 2.278778, 71.899889, 1.141268, 0.019547, 0.012892, 2.229574, 0.008631
+500,128,128,128,0,0, 2.330106, 118.635298, 0.934136, 0.034369, 0.020698, 2.250898, 0.013959
+500,256,2,256,0,0, 12.322404, 12.306346, 12.306346, 0.004136, 0.004303, 12.313336, 0.000593
+500,256,4,256,0,0, 4.335164, 12.961324, 4.320441, 0.004452, 0.004567, 4.325537, 0.000567
+500,256,8,256,0,0, 1.969501, 13.532726, 1.933247, 0.004517, 0.004580, 1.959790, 0.000578
+500,256,16,256,0,0, 1.703354, 24.176301, 1.611753, 0.005755, 0.007003, 1.688483, 0.001952
+500,256,32,256,0,0, 1.904850, 44.847144, 1.446682, 0.013626, 0.016736, 1.706043, 0.027040
+500,256,64,256,0,0, 2.245340, 96.648535, 1.534104, 0.022451, 0.030037, 2.149947, 0.040844
+500,256,128,256,0,0, 2.773811, 160.796403, 1.266113, 0.041111, 0.056598, 2.627371, 0.043137
+500,512,2,512,0,0, 26.235177, 26.215568, 26.215568, 0.004202, 0.008073, 26.221660, 0.001191
+500,512,4,512,0,0, 9.014611, 26.883625, 8.961208, 0.004395, 0.008559, 9.000486, 0.001116
+500,512,8,512,0,0, 4.034617, 28.039919, 4.005703, 0.004649, 0.009468, 4.019310, 0.001140
+500,512,16,512,0,0, 3.214531, 47.098484, 3.139899, 0.009092, 0.011023, 3.191738, 0.002611
+500,512,32,512,0,0, 3.604816, 89.716669, 2.894086, 0.010001, 0.026774, 3.524186, 0.040379
+500,512,64,512,0,0, 4.015995, 180.137384, 2.859324, 0.020042, 0.033051, 3.918841, 0.032578
+500,512,128,512,0,0, 4.442273, 272.706505, 2.147295, 0.035675, 0.031831, 4.201979, 0.020375
+500,1024,2,1024,0,0, 50.450288, 50.417214, 50.417214, 0.004227, 0.015765, 50.428021, 0.002202
+500,1024,4,1024,0,0, 17.425405, 52.140240, 17.380080, 0.004379, 0.015836, 17.403257, 0.001855
+500,1024,8,1024,0,0, 8.059152, 56.081484, 8.011641, 0.004690, 0.017390, 8.034778, 0.002219
+500,1024,16,1024,0,0, 6.722920, 99.859924, 6.657328, 0.011489, 0.026444, 6.679846, 0.005038
+500,1024,32,1024,0,0, 6.360755, 169.030394, 5.452593, 0.009884, 0.052055, 6.142774, 0.069963
+500,1024,64,1024,0,0, 7.391931, 317.477145, 5.039320, 0.020333, 0.051481, 7.111752, 0.046952
+500,1024,128,1024,0,0, 8.423848, 686.403339, 5.404751, 0.033497, 0.058219, 8.140868, 0.062137
+500,2048,2,2048,0,0, 101.733881, 101.678771, 101.678771, 0.004283, 0.031997, 101.692930, 0.004545
+500,2048,4,2048,0,0, 34.749166, 104.155397, 34.718466, 0.004400, 0.032271, 34.708618, 0.003751
+500,2048,8,2048,0,0, 16.605324, 115.889203, 16.555600, 0.004580, 0.037130, 16.558707, 0.004777
+500,2048,16,2048,0,0, 12.940189, 192.028443, 12.801896, 0.006101, 0.077377, 12.833937, 0.022254
+500,2048,32,2048,0,0, 14.592223, 386.619114, 12.471584, 0.010680, 0.103950, 14.303074, 0.173047
+500,2048,64,2048,0,0, 14.592910, 661.642371, 10.502260, 0.020033, 0.103657, 14.209316, 0.188420
+500,2048,128,2048,0,0, 16.586500, 1264.047768, 9.953132, 0.038697, 0.193779, 15.620239, 0.449244
+500,4096,2,4096,0,0, 204.784546, 204.685780, 204.685780, 0.004204, 0.062898, 204.708900, 0.008326
+500,4096,4,4096,0,0, 69.683350, 208.860223, 69.620074, 0.004474, 0.061376, 69.610527, 0.006737
+500,4096,8,4096,0,0, 33.182887, 231.716900, 33.102414, 0.004711, 0.075997, 33.092400, 0.009519
+500,4096,16,4096,0,0, 26.765486, 399.668883, 26.644592, 0.006268, 0.157734, 26.556279, 0.044358
+500,4096,32,4096,0,0, 27.229493, 705.963391, 22.773013, 0.012711, 0.192813, 26.713982, 0.276960
+500,4096,64,4096,0,0, 28.339009, 1248.046843, 19.810267, 0.018402, 0.181991, 27.774059, 0.314703
+500,4096,128,4096,0,0, 30.306277, 2012.097644, 15.843289, 0.042493, 0.154437, 29.554609, 0.073701
+750,128,2,128,0,0, 16.716893, 16.700674, 16.700674, 0.004252, 0.002274, 16.709596, 0.000487
+750,128,4,128,0,0, 6.287191, 18.360749, 6.120250, 0.032443, 0.002439, 6.251508, 0.000443
+750,128,8,128,0,0, 3.248698, 22.093794, 3.156256, 0.004693, 0.004158, 3.238912, 0.000710
+750,128,16,128,0,0, 5.518943, 75.918982, 5.061265, 0.009775, 0.012712, 5.488358, 0.007712
+750,128,32,128,0,0, 7.289634, 207.974004, 6.708839, 0.009953, 0.023219, 7.158889, 0.094595
+750,128,64,128,0,0, 10.570951, 495.409680, 7.863646, 0.018935, 0.026532, 10.334868, 0.188971
+750,128,128,128,0,0, 13.824193, 1110.824522, 8.746650, 0.045922, 0.131896, 13.559869, 0.080227
+750,256,2,256,0,0, 36.134477, 36.103141, 36.103141, 0.019781, 0.004282, 36.109231, 0.000838
+750,256,4,256,0,0, 12.139779, 36.168985, 12.056328, 0.004419, 0.004561, 12.129580, 0.000823
+750,256,8,256,0,0, 6.061381, 41.736311, 5.962330, 0.004608, 0.009056, 6.045498, 0.001650
+750,256,16,256,0,0, 10.511597, 149.254354, 9.950290, 0.005922, 0.019281, 10.474436, 0.011449
+750,256,32,256,0,0, 13.367437, 384.330857, 12.397770, 0.010085, 0.051881, 13.159518, 0.144007
+750,256,64,256,0,0, 18.041699, 966.437649, 15.340280, 0.052045, 0.044938, 17.901231, 0.041177
+750,256,128,256,0,0, 22.337049, 2299.570301, 18.106853, 0.038584, 0.044564, 22.180096, 0.061908
+750,512,2,512,0,0, 68.529564, 68.506811, 68.506811, 0.004139, 0.008303, 68.515307, 0.001492
+750,512,4,512,0,0, 23.418210, 69.865627, 23.288542, 0.004315, 0.009747, 23.401673, 0.002074
+750,512,8,512,0,0, 12.457202, 86.583909, 12.369130, 0.005673, 0.016862, 12.431215, 0.003128
+750,512,16,512,0,0, 18.801801, 278.693055, 18.579537, 0.005968, 0.037815, 18.733447, 0.023824
+750,512,32,512,0,0, 26.980887, 792.209433, 25.555143, 0.007954, 0.106721, 26.656441, 0.141323
+750,512,64,512,0,0, 27.589446, 1530.657943, 24.296158, 0.017062, 0.088206, 27.225620, 0.148318
+750,512,128,512,0,0, 38.883541, 4180.067656, 32.913919, 0.033371, 0.066507, 38.705540, 0.062071
+750,1024,2,1024,0,0, 133.941817, 133.906841, 133.906841, 0.004106, 0.016594, 133.917887, 0.002835
+750,1024,4,1024,0,0, 48.435140, 144.993898, 48.331299, 0.004297, 0.019951, 48.407309, 0.003204
+750,1024,8,1024,0,0, 25.223784, 175.878976, 25.125568, 0.004611, 0.028313, 25.185282, 0.005304
+750,1024,16,1024,0,0, 36.468042, 540.061006, 36.004067, 0.005926, 0.110452, 36.261622, 0.088559
+750,1024,32,1024,0,0, 52.645259, 1572.201588, 50.716180, 0.010997, 0.192884, 52.164191, 0.274648
+750,1024,64,1024,0,0, 56.220360, 3245.070712, 51.509059, 0.017588, 0.160561, 55.742768, 0.210207
+750,1024,128,1024,0,0, 62.978787, 6434.621553, 50.666311, 0.036236, 0.097922, 62.718286, 0.102754
+750,2048,2,2048,0,0, 283.568911, 283.510014, 283.510014, 0.004349, 0.032032, 283.526549, 0.005531
+750,2048,4,2048,0,0, 94.658873, 283.357866, 94.452622, 0.048906, 0.037119, 94.566319, 0.006087
+750,2048,8,2048,0,0, 51.110139, 356.795271, 50.970753, 0.004727, 0.059666, 51.033720, 0.011569
+750,2048,16,2048,0,0, 70.975665, 1059.788217, 70.652548, 0.005916, 0.236539, 70.589859, 0.140908
+750,2048,32,2048,0,0, 102.477838, 3044.350797, 98.204864, 0.010283, 0.354282, 101.355328, 0.702979
+750,2048,64,2048,0,0, 102.990827, 5855.024704, 92.936900, 0.017824, 0.475834, 101.769215, 0.703168
+750,2048,128,2048,0,0, 105.297991,10488.111143, 82.583552, 0.036558, 0.144753, 104.727922, 0.108139
+750,4096,2,4096,0,0, 555.453277, 555.292357, 555.292357, 0.007329, 0.067297, 555.367209, 0.010900
+750,4096,4,4096,0,0, 189.587697, 568.405594, 189.468531, 0.004528, 0.072257, 189.498632, 0.011702
+750,4096,8,4096,0,0, 102.146327, 714.314874, 102.044982, 0.007327, 0.114367, 102.002253, 0.021825
+750,4096,16,4096,0,0, 144.102350, 2151.551728, 143.436782, 0.006462, 0.409958, 143.437303, 0.244653
+750,4096,32,4096,0,0, 194.419940, 5758.665055, 185.763389, 0.010268, 0.766948, 192.044107, 1.375364
+750,4096,64,4096,0,0, 200.030771,11258.443192, 178.705447, 0.018264, 0.474915, 198.359453, 0.761321
+750,4096,128,4096,0,0, 204.313462,20749.655014, 163.383110, 0.035012, 0.295151, 203.651990, 0.275887
+1000,128,2,128,0,0, 29.770592, 29.757337, 29.757337, 0.004464, 0.002278, 29.762863, 0.000524
+1000,128,4,128,0,0, 11.678153, 34.113526, 11.371175, 0.057331, 0.002693, 11.616738, 0.000817
+1000,128,8,128,0,0, 13.803799, 94.452541, 13.493220, 0.004694, 0.007421, 13.788436, 0.002709
+1000,128,16,128,0,0, 23.930091, 338.695120, 22.579675, 0.005851, 0.022464, 23.885343, 0.015561
+1000,128,32,128,0,0, 33.130300, 968.498724, 31.241894, 0.010093, 0.044087, 33.029186, 0.045804
+1000,128,64,128,0,0, 39.173076, 2235.012034, 35.476381, 0.017727, 0.054286, 38.672434, 0.424554
+1000,128,128,128,0,0, 36.853115, 2918.462312, 22.980018, 0.014013, 0.104637, 36.652338, 0.072486
+1000,256,2,256,0,0, 53.229552, 53.212290, 53.212290, 0.004096, 0.004492, 53.219339, 0.001010
+1000,256,4,256,0,0, 23.627315, 70.516576, 23.505525, 0.004352, 0.005709, 23.615343, 0.001301
+1000,256,8,256,0,0, 27.889357, 193.588364, 27.655481, 0.004543, 0.015044, 27.864525, 0.004765
+1000,256,16,256,0,0, 48.933727, 712.039839, 47.469323, 0.010978, 0.043536, 48.848019, 0.030139
+1000,256,32,256,0,0, 58.455169, 1754.779106, 56.605778, 0.013841, 0.077393, 58.201404, 0.116174
+1000,256,64,256,0,0, 69.335958, 4071.373781, 64.624981, 0.020351, 0.064504, 69.166389, 0.077073
+1000,256,128,256,0,0, 73.437282, 8201.311934, 64.577259, 0.036781, 0.101338, 73.231184, 0.065738
+1000,512,2,512,0,0, 123.429896, 123.399622, 123.399622, 0.004146, 0.009529, 123.413614, 0.002157
+1000,512,4,512,0,0, 43.218841, 129.234505, 43.078168, 0.051984, 0.010382, 43.153467, 0.002410
+1000,512,8,512,0,0, 55.192030, 383.975855, 54.853694, 0.004620, 0.029685, 55.147670, 0.009506
+1000,512,16,512,0,0, 92.930752, 1379.969207, 91.997947, 0.014428, 0.086800, 92.768318, 0.059613
+1000,512,32,512,0,0, 126.463876, 3828.427379, 123.497657, 0.010952, 0.360557, 125.887106, 0.202839
+1000,512,64,512,0,0, 119.728931, 7097.961818, 112.666061, 0.019891, 0.106005, 119.362625, 0.145648
+1000,512,128,512,0,0, 125.773081,14278.942391, 112.432617, 0.044321, 0.589570, 124.843329, 0.218308
+1000,1024,2,1024,0,0, 242.638137, 242.599617, 242.599617, 0.004350, 0.017312, 242.612246, 0.003694
+1000,1024,4,1024,0,0, 85.999720, 257.745415, 85.915138, 0.004228, 0.022347, 85.967955, 0.004594
+1000,1024,8,1024,0,0, 104.276896, 727.714805, 103.959258, 0.004533, 0.058361, 104.194498, 0.018775
+1000,1024,16,1024,0,0, 179.397725, 2674.260176, 178.284012, 0.005751, 0.180868, 179.088346, 0.119980
+1000,1024,32,1024,0,0, 234.717781, 7153.117612, 230.745729, 0.013912, 0.281694, 233.754209, 0.613524
+1000,1024,64,1024,0,0, 243.122963,14683.788763, 233.076012, 0.018540, 0.238411, 241.756822, 1.058826
+1000,1024,128,1024,0,0, 224.869322,24497.322527, 192.892303, 0.036293, 0.383182, 224.149249, 0.117720
+1000,2048,2,2048,0,0, 470.366727, 470.300350, 470.300350, 0.004261, 0.033703, 470.321284, 0.006922
+1000,2048,4,2048,0,0, 175.253131, 525.141805, 175.047268, 0.004376, 0.047182, 175.190615, 0.010317
+1000,2048,8,2048,0,0, 215.895084, 1509.309771, 215.615682, 0.004675, 0.117245, 215.731919, 0.040461
+1000,2048,16,2048,0,0, 362.208114, 5415.973462, 361.064897, 0.006565, 0.352541, 361.599500, 0.244377
+1000,2048,32,2048,0,0, 475.230254,14569.626412, 469.987949, 0.011676, 0.645928, 473.598639, 0.965933
+1000,2048,64,2048,0,0, 494.091598,30015.834219, 476.441813, 0.020493, 0.469643, 490.578353, 3.003985
+1000,2048,128,2048,0,0, 451.077935,50371.022273, 396.622223, 0.033740, 0.231280, 449.411589, 0.972004
+1000,4096,2,4096,0,0, 953.616416, 953.495783, 953.495783, 0.004181, 0.070244, 953.527368, 0.013957
+1000,4096,4,4096,0,0, 355.243861, 1065.051868, 355.017289, 0.004371, 0.093182, 355.122944, 0.022640
+1000,4096,8,4096,0,0, 433.726900, 3033.405281, 433.343612, 0.004650, 0.247914, 433.387164, 0.085992
+1000,4096,16,4096,0,0, 721.345946,10803.143907, 720.209594, 0.005869, 0.714503, 720.125901, 0.490522
+1000,4096,32,4096,0,0, 944.591248,28924.273275, 933.041073, 0.010075, 1.148750, 940.693538, 2.723428
+1000,4096,64,4096,0,0, 942.116323,57323.348160, 909.894415, 0.016448, 1.003190, 935.898291, 4.514609
+1000,4096,128,4096,0,0, 878.001012,99676.887053, 784.857378, 0.036211, 0.519011, 870.221013, 6.834079
+1250,128,2,128,0,0, 46.569408, 46.554873, 46.554873, 0.004108, 0.002656, 46.561144, 0.000731
+1250,128,4,128,0,0, 30.119571, 89.656725, 29.885575, 0.004457, 0.003541, 30.109626, 0.001236
+1250,128,8,128,0,0, 36.460598, 249.574697, 35.653528, 0.010232, 0.009610, 36.436126, 0.003832
+1250,128,16,128,0,0, 59.502395, 843.672112, 56.244807, 0.005942, 0.026293, 59.448772, 0.020205
+1250,128,32,128,0,0, 72.072475, 2080.989446, 67.128692, 0.011025, 0.039194, 71.919108, 0.079318
+1250,128,64,128,0,0, 86.104786, 4935.419568, 78.339993, 0.018057, 0.042844, 85.998462, 0.038668
+1250,128,128,128,0,0, 77.618463, 5701.623588, 44.894674, 0.043224, 0.088842, 77.407490, 0.074475
+1250,256,2,256,0,0, 100.598086, 100.578950, 100.578950, 0.004227, 0.005169, 100.586552, 0.001416
+1250,256,4,256,0,0, 59.797166, 178.558534, 59.519511, 0.004264, 0.007202, 59.782516, 0.002384
+1250,256,8,256,0,0, 73.514615, 510.062534, 72.866076, 0.004739, 0.019000, 73.483024, 0.007082
+1250,256,16,256,0,0, 128.123971, 1902.164963, 126.810998, 0.006052, 0.054921, 128.010512, 0.051013
+1250,256,32,256,0,0, 153.775917, 4598.057978, 148.324451, 0.009331, 0.090556, 153.522813, 0.151387
+1250,256,64,256,0,0, 150.216360, 8764.724928, 139.122618, 0.019163, 2.092901, 147.553721, 0.351948
+1250,256,128,256,0,0, 177.907192,20039.124384, 157.788381, 0.048587, 0.118936, 177.574343, 0.155394
+1250,512,2,512,0,0, 215.098102, 215.073462, 215.073462, 0.004315, 0.009670, 215.080904, 0.002425
+1250,512,4,512,0,0, 109.146264, 327.199511, 109.066504, 0.004337, 0.016408, 109.119291, 0.005347
+1250,512,8,512,0,0, 142.795367, 996.716348, 142.388050, 0.009937, 0.041764, 142.724918, 0.017826
+1250,512,16,512,0,0, 230.383546, 3427.512628, 228.500842, 0.007239, 0.117978, 230.099238, 0.156931
+1250,512,32,512,0,0, 273.210326, 8314.220277, 268.200654, 0.010056, 0.213691, 272.711046, 0.272774
+1250,512,64,512,0,0, 287.089465,17235.628105, 273.581398, 0.020519, 0.147214, 286.064972, 0.800797
+1250,512,128,512,0,0, 283.961749,32466.357558, 255.640611, 0.043188, 0.138971, 283.378742, 0.313745
+1250,1024,2,1024,0,0, 410.219854, 410.175264, 410.175264, 0.004320, 0.019627, 410.190068, 0.005090
+1250,1024,4,1024,0,0, 209.731069, 627.891305, 209.297102, 0.004313, 0.034657, 209.680989, 0.010153
+1250,1024,8,1024,0,0, 273.889747, 1911.708104, 273.101158, 0.004650, 0.081724, 273.769210, 0.033137
+1250,1024,16,1024,0,0, 462.246610, 6906.854525, 460.456968, 0.006026, 0.231993, 461.758819, 0.246411
+1250,1024,32,1024,0,0, 568.834017,17434.980300, 562.418719, 0.010151, 0.402075, 567.766837, 0.525005
+1250,1024,64,1024,0,0, 536.348438,32621.758892, 517.805697, 0.020536, 0.328125, 533.304757, 2.538022
+1250,1024,128,1024,0,0, 563.740951,65710.510669, 517.405596, 0.061362, 0.212728, 562.735611, 0.612651
+1250,2048,2,2048,0,0, 808.085006, 808.013890, 808.013890, 0.004235, 0.036622, 808.034246, 0.009066
+1250,2048,4,2048,0,0, 441.614899, 1323.700046, 441.233349, 0.004357, 0.061445, 441.527555, 0.020352
+1250,2048,8,2048,0,0, 554.188846, 3874.287916, 553.469702, 0.004531, 0.164681, 553.951301, 0.067054
+1250,2048,16,2048,0,0, 956.433594,14313.179586, 954.211972, 0.006215, 0.431252, 955.611788, 0.378524
+1250,2048,32,2048,0,0, 1108.929057,34116.041303, 1100.517461, 0.016419, 0.747781, 1106.627962, 1.509855
+1250,2048,64,2048,0,0, 1120.049574,68971.918951, 1094.792364, 0.016730, 0.557383, 1115.288587, 4.072594
+1250,2048,128,2048,0,0, 1094.614234,************, 1011.476835, 0.057344, 0.333995, 1092.085611, 1.595479
+1250,4096,2,4096,0,0, 1630.034919, 1629.895321, 1629.895321, 0.004248, 0.078686, 1629.932331, 0.018776
+1250,4096,4,4096,0,0, 888.220732, 2663.464752, 887.821584, 0.004291, 0.116403, 888.060123, 0.038862
+1250,4096,8,4096,0,0, 1102.162421, 7710.107161, 1101.443880, 0.004682, 0.342501, 1101.670976, 0.142327
+1250,4096,16,4096,0,0, 1966.454787,29468.413786, 1964.560919, 0.007135, 0.866369, 1964.756346, 0.814623
+1250,4096,32,4096,0,0, 2207.932150,67980.316738, 2192.913443, 0.010070, 1.359656, 2203.278011, 3.259000
+1250,4096,64,4096,0,0, 2225.519887,************, 2187.273228, 0.017226, 1.657275, 2212.772892, 10.833815
+1250,4096,128,4096,0,0, 2125.203878,************, 1982.550154, 0.037032, 1.160146, 2120.884840, 3.060174
+1500,128,2,128,0,0, 80.676227, 80.660830, 80.660830, 0.004420, 0.003019, 80.666663, 0.001035
+1500,128,4,128,0,0, 61.554222, 183.257981, 61.085994, 0.004322, 0.005019, 61.541462, 0.002366
+1500,128,8,128,0,0, 82.732376, 571.790239, 81.684320, 0.004570, 0.012475, 82.708605, 0.005740
+1500,128,16,128,0,0, 109.212521, 1585.615201, 105.707680, 0.006320, 0.025719, 109.158653, 0.020250
+1500,128,32,128,0,0, 130.722042, 3805.372558, 122.753953, 0.009578, 0.048197, 130.593332, 0.067121
+1500,128,64,128,0,0, 130.285551, 6876.039232, 109.143480, 0.018711, 0.063410, 130.118084, 0.082449
+1500,128,128,128,0,0, 146.393018,11204.887057, 88.227457, 0.042228, 0.073020, 146.189350, 0.072214
+1500,256,2,256,0,0, 160.631157, 160.608971, 160.608971, 0.004171, 0.005644, 160.618395, 0.001889
+1500,256,4,256,0,0, 129.603583, 388.391540, 129.463847, 0.005536, 0.011520, 129.581346, 0.004186
+1500,256,8,256,0,0, 137.942502, 952.949987, 136.135712, 0.011350, 0.025871, 137.891677, 0.012476
+1500,256,16,256,0,0, 206.587494, 3043.139626, 202.875975, 0.005975, 0.061168, 206.474984, 0.043465
+1500,256,32,256,0,0, 230.885814, 6886.941329, 222.159398, 0.010687, 0.087788, 230.656823, 0.124177
+1500,256,64,256,0,0, 237.804639,13635.606512, 216.438199, 0.019440, 0.087194, 237.221792, 0.224669
+1500,256,128,256,0,0, 239.244040,24946.215767, 196.426896, 0.033602, 0.168167, 238.866742, 0.171978
+1500,512,2,512,0,0, 291.123423, 291.092744, 291.092744, 0.004365, 0.011782, 291.102543, 0.003728
+1500,512,4,512,0,0, 247.226760, 740.175374, 246.725125, 0.004389, 0.019997, 247.191821, 0.009456
+1500,512,8,512,0,0, 298.411456, 2083.129976, 297.589997, 0.004562, 0.047122, 298.337388, 0.021034
+1500,512,16,512,0,0, 423.911389, 6287.520108, 419.168007, 0.013463, 0.112148, 423.687996, 0.095034
+1500,512,32,512,0,0, 469.137951,14246.983205, 459.580103, 0.010437, 0.198906, 468.584925, 0.340125
+1500,512,64,512,0,0, 474.699872,28554.587038, 453.247413, 0.017329, 0.175686, 473.600060, 0.902962
+1500,512,128,512,0,0, 487.884069,55455.521253, 436.657648, 0.037351, 0.109601, 487.597212, 0.134055
+1500,1024,2,1024,0,0, 624.919882, 624.857981, 624.857981, 0.009461, 0.021478, 624.880678, 0.006988
+1500,1024,4,1024,0,0, 481.593973, 1443.163454, 481.054485, 0.004501, 0.037445, 481.535544, 0.015301
+1500,1024,8,1024,0,0, 576.868491, 4026.885994, 575.269428, 0.004741, 0.102488, 576.710208, 0.049205
+1500,1024,16,1024,0,0, 891.805341,13311.616074, 887.441072, 0.005866, 0.234382, 891.360387, 0.200538
+1500,1024,32,1024,0,0, 927.055623,28366.032932, 915.033320, 0.009294, 0.363933, 925.520829, 1.120398
+1500,1024,64,1024,0,0, 948.177239,58111.570081, 922.405874, 0.018098, 0.327780, 945.477676, 2.277677
+1500,1024,128,1024,0,0, 903.102268,************, 830.803826, 0.033407, 0.200637, 902.522910, 0.298986
+1500,2048,2,2048,0,0, 1280.582407, 1280.492896, 1280.492896, 0.004151, 0.049768, 1280.513590, 0.013611
+1500,2048,4,2048,0,0, 986.941706, 2958.918703, 986.306234, 0.004460, 0.083841, 986.819188, 0.032875
+1500,2048,8,2048,0,0, 1161.197780, 8117.793219, 1159.684746, 0.004664, 0.214210, 1160.870545, 0.106264
+1500,2048,16,2048,0,0, 1751.594255,26206.838312, 1747.122554, 0.006335, 0.463026, 1750.716876, 0.401309
+1500,2048,32,2048,0,0, 1852.798996,57010.232616, 1839.039762, 0.008976, 0.971651, 1850.248045, 1.549176
+1500,2048,64,2048,0,0, 1911.120045,************, 1875.629441, 0.023139, 0.855113, 1907.026228, 3.201178
+1500,2048,128,2048,0,0, 1873.657313,************, 1758.599450, 0.019696, 0.370651, 1871.907462, 1.228968
+1500,4096,2,4096,0,0, 2496.960370, 2496.803974, 2496.803974, 0.004237, 0.089064, 2496.839913, 0.025423
+1500,4096,4,4096,0,0, 1962.576765, 5885.522161, 1961.840720, 0.004437, 0.171008, 1962.331347, 0.068322
+1500,4096,8,4096,0,0, 2342.650311,16385.396411, 2340.770916, 0.004597, 0.438454, 2341.985405, 0.218639
+1500,4096,16,4096,0,0, 3576.939093,53562.414400, 3570.827627, 0.006277, 0.922882, 3575.142556, 0.855516
+1500,4096,32,4096,0,0, 3691.636554,************, 3677.241373, 0.010495, 1.462289, 3686.439928, 3.703875
+1500,4096,64,4096,0,0, 3754.585601,************, 3706.355263, 0.019955, 1.260251, 3741.669516, 11.404246
+1500,4096,128,4096,0,0, 3687.162119,************, 3505.904420, 0.042209, 0.800541, 3673.444560, 12.859581
+1750,128,2,128,0,0, 133.986640, 133.971204, 133.971204, 0.004151, 0.003116, 133.976856, 0.001176
+1750,128,4,128,0,0, 102.233218, 304.742223, 101.580741, 0.004376, 0.005427, 102.219422, 0.002674
+1750,128,8,128,0,0, 134.156114, 919.838751, 131.405536, 0.004532, 0.013780, 134.128471, 0.007979
+1750,128,16,128,0,0, 167.611331, 2376.276255, 158.418417, 0.017870, 0.029152, 167.540039, 0.022462
+1750,128,32,128,0,0, 161.455512, 4397.224275, 141.845944, 0.011944, 0.051094, 161.313208, 0.075598
+1750,128,64,128,0,0, 178.880084, 8569.935045, 136.030715, 0.017216, 0.064827, 178.739858, 0.054378
+1750,128,128,128,0,0, 196.437171,13489.194810, 106.214132, 0.032026, 0.071000, 196.267959, 0.060100
+1750,256,2,256,0,0, 265.993506, 265.972323, 265.972323, 0.004282, 0.006117, 265.979378, 0.002328
+1750,256,4,256,0,0, 232.867140, 698.242532, 232.747511, 0.004394, 0.014530, 232.839976, 0.006819
+1750,256,8,256,0,0, 259.743921, 1803.219301, 257.602757, 0.004735, 0.030051, 259.692079, 0.015632
+1750,256,16,256,0,0, 318.842123, 4679.141296, 311.942753, 0.007134, 0.059300, 318.731589, 0.041783
+1750,256,32,256,0,0, 330.314514, 9773.943253, 315.288492, 0.008923, 0.090187, 330.046902, 0.165891
+1750,256,64,256,0,0, 371.147059,20941.536466, 332.405341, 0.018094, 0.095073, 370.887753, 0.134920
+1750,256,128,256,0,0, 383.824340,39676.384591, 312.412477, 0.034579, 0.166181, 383.438743, 0.165195
+1750,512,2,512,0,0, 496.907862, 496.875050, 496.875050, 0.004181, 0.012519, 496.885305, 0.004540
+1750,512,4,512,0,0, 476.196916, 1425.628655, 475.209552, 0.004261, 0.024246, 476.154677, 0.012365
+1750,512,8,512,0,0, 517.757583, 3598.967206, 514.138172, 0.004753, 0.060066, 517.660761, 0.030338
+1750,512,16,512,0,0, 658.025421, 9799.106607, 653.273774, 0.005841, 0.119137, 657.813778, 0.083625
+1750,512,32,512,0,0, 706.443128,21423.880538, 691.092921, 0.010401, 0.174467, 705.925762, 0.328683
+1750,512,64,512,0,0, 710.275857,42408.091375, 673.144308, 0.020113, 0.183049, 709.420463, 0.593765
+1750,512,128,512,0,0, 704.101425,79618.851020, 626.920087, 0.043380, 0.230677, 703.300426, 0.451129
+1750,1024,2,1024,0,0, 1006.035307, 1005.974548, 1005.974548, 0.004194, 0.028523, 1005.992654, 0.008516
+1750,1024,4,1024,0,0, 955.576958, 2864.497672, 954.832557, 0.004352, 0.053300, 955.493004, 0.024685
+1750,1024,8,1024,0,0, 1050.145272, 7330.284483, 1047.183498, 0.005514, 0.134011, 1049.928657, 0.074854
+1750,1024,16,1024,0,0, 1340.491857,19990.390996, 1332.692733, 0.006712, 0.246385, 1340.017118, 0.217136
+1750,1024,32,1024,0,0, 1503.071900,46093.794380, 1486.896593, 0.010886, 0.352983, 1501.838429, 0.807069
+1750,1024,64,1024,0,0, 1398.343195,85545.546638, 1357.865820, 0.020997, 0.371666, 1396.800157, 1.085084
+1750,1024,128,1024,0,0, 1366.527768,************, 1263.586652, 0.038724, 8.044040, 1358.141952, 0.272095
+1750,2048,2,2048,0,0, 2087.846528, 2087.753933, 2087.753933, 0.004210, 0.046288, 2087.778378, 0.016084
+1750,2048,4,2048,0,0, 1757.464721, 5270.275212, 1756.758404, 0.004531, 0.099467, 1757.315983, 0.043011
+1750,2048,8,2048,0,0, 1919.916411,13422.869357, 1917.552765, 0.004653, 0.240139, 1919.543191, 0.125440
+1750,2048,16,2048,0,0, 2563.349331,38331.506228, 2555.433749, 0.007739, 0.466564, 2562.483693, 0.384164
+1750,2048,32,2048,0,0, 2688.618209,82754.605907, 2669.503416, 0.009671, 1.064955, 2685.392771, 2.137231
+1750,2048,64,2048,0,0, 2822.444808,************, 2767.493087, 0.018938, 0.667703, 2814.540751, 6.937719
+1750,2048,128,2048,0,0, 2808.361412,************, 2647.963380, 0.039525, 0.434241, 2804.357119, 3.520653
+1750,4096,2,4096,0,0, 4131.079079, 4130.911614, 4130.911614, 0.004239, 0.093056, 4130.946585, 0.033523
+1750,4096,4,4096,0,0, 3537.187697,10608.661948, 3536.220649, 0.004349, 0.199949, 3536.884203, 0.097128
+1750,4096,8,4096,0,0, 4055.054432,28363.233622, 4051.890517, 0.004604, 0.511167, 4054.257444, 0.276556
+1750,4096,16,4096,0,0, 5430.548546,81338.981406, 5422.598760, 0.006022, 0.946328, 5428.747721, 0.835629
+1750,4096,32,4096,0,0, 5585.314139,************, 5557.501424, 0.016610, 1.610802, 5580.737167, 2.929446
diff --git a/report/figures/wall-times/plot.gnu b/report/figures/wall-times/plot.gnu
new file mode 100644
index 0000000..0aa694c
--- /dev/null
+++ b/report/figures/wall-times/plot.gnu
@@ -0,0 +1,49 @@
+#set terminal x11 persist
+set terminal cairolatex pdf size 6in,3in
+set output "walltimes.tex"
+
+ptsize=0.4
+# R ColorBrewer theme (minus yellow)
+set linetype 1 lc rgb '#E41A1C' pt 7 ps ptsize
+set linetype 2 lc rgb '#377EB8' pt 7 ps ptsize
+set linetype 3 lc rgb '#4DAF4A' pt 7 ps ptsize
+set linetype 4 lc rgb '#984EA3' pt 7 ps ptsize
+set linetype 5 lc rgb '#FF7F00' pt 7 ps ptsize
+set linetype 6 lc rgb '#A65628' pt 7 ps ptsize
+set linetype 7 lc rgb '#F781BF' pt 7 ps ptsize
+set linetype 8 lc rgb '#999999' pt 7 ps ptsize
+set linetype 9 lc rgb '#8DD3C7' pt 7 ps ptsize
+set linetype 10 lc rgb '#BEBADA' pt 7 ps ptsize
+set linetype 11 lc rgb '#FB8072' pt 7 ps ptsize
+
+set logscale xy
+set xlabel 'Sample Size $L$'
+set ylabel 'Wall Time [s]'
+set grid
+set key top outside center horizontal
+set key samplen 2
+set key width 5
+
+set lmargin at screen 0.15
+set rmargin at screen 0.85
+
+# Simple loop over files
+plot for [i=1:6] sprintf('%d_128_perf.out', 500+250*(i-1)) \
+ using 1:2 with linespoints title sprintf('$N=%d$', 500+250*(i-1)), \
+ [100:10000] '+' using 1:(0.03*$1) with lines dt 2 lc rgb "black" title "$\\mathcal{O}(n)$"
+ #1e-3*x**3 with lines dt 2 lc rgb "black"
+
+
+# And for matrix size
+
+set output "N_walltimes.tex"
+array samples[6] = [128, 256, 512, 1024, 2048, 4096]
+
+set xrange [400:2400]
+set yrange [1:10000]
+set xlabel "Matrix size $N$"
+
+plot for [i=1:|samples|] sprintf('%d_128_perf.out',samples[i]) \
+ using 1:2 with linespoints title sprintf('$L=%d$', samples[i]), \
+ 1e-8*x**3 with lines dt 2 lc rgb "black" title "$\\mathcal{O}(n^3)$"
+
diff --git a/report/figures/wall-times/split.sh b/report/figures/wall-times/split.sh
new file mode 100755
index 0000000..b3c2794
--- /dev/null
+++ b/report/figures/wall-times/split.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Split up Joe's performance data by constant matrix size and plot vs. eigenvalues and wall time.
+# Only include 128 core data
+
+NSIZE=$(seq 500 250 1750)
+NPROC=128
+
+for N in $NSIZE; do
+ # Grab the relevant files
+ awk -F"," -v N="$N" '$3==128 && $1==N {print $2,$7}' performance.csv > $N\_128_perf.out
+done
+
+
+# Now do the same except split it up by blocks of constant sample size and investigat the matrix size
+
+NSAMPLES="128 256 512 1024 2048 4096"
+
+for L in $NSAMPLES; do
+ awk -F"," -v L="$L" '$3==128 && $2==L {print $1, $7}' performance.csv > $L\_128_perf.out
+done
diff --git a/report/figures/wall-times/walltimes.pdf b/report/figures/wall-times/walltimes.pdf
new file mode 100644
index 0000000..58bcc7d
--- /dev/null
+++ b/report/figures/wall-times/walltimes.pdf
Binary files differ
diff --git a/report/figures/wall-times/walltimes.tex b/report/figures/wall-times/walltimes.tex
new file mode 100644
index 0000000..073f4d9
--- /dev/null
+++ b/report/figures/wall-times/walltimes.tex
@@ -0,0 +1,126 @@
+% GNUPLOT: LaTeX picture with Postscript
+\begingroup
+ \makeatletter
+ \providecommand\color[2][]{%
+ \GenericError{(gnuplot) \space\space\space\@spaces}{%
+ Package color not loaded in conjunction with
+ terminal option `colourtext'%
+ }{See the gnuplot documentation for explanation.%
+ }{Either use 'blacktext' in gnuplot or load the package
+ color.sty in LaTeX.}%
+ \renewcommand\color[2][]{}%
+ }%
+ \providecommand\includegraphics[2][]{%
+ \GenericError{(gnuplot) \space\space\space\@spaces}{%
+ Package graphicx or graphics not loaded%
+ }{See the gnuplot documentation for explanation.%
+ }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
+ \renewcommand\includegraphics[2][]{}%
+ }%
+ \providecommand\rotatebox[2]{#2}%
+ \@ifundefined{ifGPcolor}{%
+ \newif\ifGPcolor
+ \GPcolortrue
+ }{}%
+ \@ifundefined{ifGPblacktext}{%
+ \newif\ifGPblacktext
+ \GPblacktexttrue
+ }{}%
+ % define a \g@addto@macro without @ in the name:
+ \let\gplgaddtomacro\g@addto@macro
+ % define empty templates for all commands taking text:
+ \gdef\gplbacktext{}%
+ \gdef\gplfronttext{}%
+ \makeatother
+ \ifGPblacktext
+ % no textcolor at all
+ \def\colorrgb#1{}%
+ \def\colorgray#1{}%
+ \else
+ % gray or color?
+ \ifGPcolor
+ \def\colorrgb#1{\color[rgb]{#1}}%
+ \def\colorgray#1{\color[gray]{#1}}%
+ \expandafter\def\csname LTw\endcsname{\color{white}}%
+ \expandafter\def\csname LTb\endcsname{\color{black}}%
+ \expandafter\def\csname LTa\endcsname{\color{black}}%
+ \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
+ \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
+ \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
+ \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
+ \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
+ \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
+ \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
+ \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
+ \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
+ \else
+ % gray
+ \def\colorrgb#1{\color{black}}%
+ \def\colorgray#1{\color[gray]{#1}}%
+ \expandafter\def\csname LTw\endcsname{\color{white}}%
+ \expandafter\def\csname LTb\endcsname{\color{black}}%
+ \expandafter\def\csname LTa\endcsname{\color{black}}%
+ \expandafter\def\csname LT0\endcsname{\color{black}}%
+ \expandafter\def\csname LT1\endcsname{\color{black}}%
+ \expandafter\def\csname LT2\endcsname{\color{black}}%
+ \expandafter\def\csname LT3\endcsname{\color{black}}%
+ \expandafter\def\csname LT4\endcsname{\color{black}}%
+ \expandafter\def\csname LT5\endcsname{\color{black}}%
+ \expandafter\def\csname LT6\endcsname{\color{black}}%
+ \expandafter\def\csname LT7\endcsname{\color{black}}%
+ \expandafter\def\csname LT8\endcsname{\color{black}}%
+ \fi
+ \fi
+ \setlength{\unitlength}{0.0500bp}%
+ \ifx\gptboxheight\undefined%
+ \newlength{\gptboxheight}%
+ \newlength{\gptboxwidth}%
+ \newsavebox{\gptboxtext}%
+ \fi%
+ \setlength{\fboxrule}{0.5pt}%
+ \setlength{\fboxsep}{1pt}%
+ \definecolor{tbcol}{rgb}{1,1,1}%
+\begin{picture}(8640.00,4320.00)%
+ \gplgaddtomacro\gplbacktext{%
+ \csname LTb\endcsname%%
+ \put(1181,655){\makebox(0,0)[r]{\strut{}$1$}}%
+ \csname LTb\endcsname%%
+ \put(1181,1361){\makebox(0,0)[r]{\strut{}$10$}}%
+ \csname LTb\endcsname%%
+ \put(1181,2068){\makebox(0,0)[r]{\strut{}$100$}}%
+ \csname LTb\endcsname%%
+ \put(1181,2774){\makebox(0,0)[r]{\strut{}$1000$}}%
+ \csname LTb\endcsname%%
+ \put(1181,3480){\makebox(0,0)[r]{\strut{}$10000$}}%
+ \csname LTb\endcsname%%
+ \put(1293,450){\makebox(0,0){\strut{}$100$}}%
+ \csname LTb\endcsname%%
+ \put(4310,450){\makebox(0,0){\strut{}$1000$}}%
+ \csname LTb\endcsname%%
+ \put(7326,450){\makebox(0,0){\strut{}$10000$}}%
+ }%
+ \gplgaddtomacro\gplfronttext{%
+ \csname LTb\endcsname%%
+ \put(2899,4115){\makebox(0,0)[r]{\strut{}$N=500$}}%
+ \csname LTb\endcsname%%
+ \put(2899,3910){\makebox(0,0)[r]{\strut{}$N=750$}}%
+ \csname LTb\endcsname%%
+ \put(2899,3706){\makebox(0,0)[r]{\strut{}$N=1000$}}%
+ \csname LTb\endcsname%%
+ \put(4661,4115){\makebox(0,0)[r]{\strut{}$N=1250$}}%
+ \csname LTb\endcsname%%
+ \put(4661,3910){\makebox(0,0)[r]{\strut{}$N=1500$}}%
+ \csname LTb\endcsname%%
+ \put(4661,3706){\makebox(0,0)[r]{\strut{}$N=1750$}}%
+ \csname LTb\endcsname%%
+ \put(6422,4115){\makebox(0,0)[r]{\strut{}$\mathcal{O}(n)$}}%
+ \csname LTb\endcsname%%
+ \put(434,2068){\rotatebox{-270.00}{\makebox(0,0){\strut{}Wall Time [s]}}}%
+ \csname LTb\endcsname%%
+ \put(4309,143){\makebox(0,0){\strut{}Sample Size $L$}}%
+ }%
+ \gplbacktext
+ \put(0,0){\includegraphics[width={432.00bp},height={216.00bp}]{walltimes}}%
+ \gplfronttext
+ \end{picture}%
+\endgroup
diff --git a/report/report.tex b/report/report.tex
index 00a8730..3878ec0 100644
--- a/report/report.tex
+++ b/report/report.tex
@@ -6,7 +6,7 @@
\usepackage{xcolor}
\usepackage{graphicx}
-\graphicspath{{./figures/} {./figures/tracy-widom-approx/}, {./figures/results/}}
+\graphicspath{{./figures/} {./figures/tracy-widom-approx/}, {./figures/results/} {./figures/wall-times/}}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{longtable}
@@ -162,7 +162,7 @@ The manager process is relatively straightforward and focuses more on the `book
\label{alg:manager}
\end{algorithm}
-Note that the actions labelled with involving MPI communication that is blocking, i.e., the worker/manager will wait to receive a broadcast before continuing at all.
+Note that the actions labelled with involving MPI communication are blocking, i.e., the worker/manager will wait to receive a broadcast before continuing at all.
\subsection{The Calculation (Worker) Process}
The worker process involves calculating the eigenvalues and is more complicated than the manager process. Various sub-processes are included in different algorithms, namely for building the matrix, computing the eigenvalue, and applying the power method. The overview of the whole process is outlined in Algorithm \ref{alg:worker}:
@@ -173,7 +173,7 @@ The worker process involves calculating the eigenvalues and is more complicated
\State size $\gets$ \texttt{MPI Receive}: matrix size
\State Initialize matrix space in memory
\While{Worker not Finished}
- \State seed $\gets$ \texttt{MPI Receieve}: new matrix seed
+ \State seed $\gets$ \texttt{MPI Receive}: new matrix seed
\State Call \texttt{open\_prng\_seed}(seed)
\State matrix $\gets$ \texttt{build\_random\_matrix}(size)
\State eig $\gets$ \texttt{calculate\_eigenvalue}(matrix)
@@ -255,7 +255,11 @@ So far the structure has involved a minimal amount of math. This is only because
\label{alg:power-iteration}
\end{algorithm}
-These algorithms compose the entirety of the program for reconstructing the Tracy-Widom distributions discussed earlier.
+These algorithms compose the entirety of the program for reconstructing the Tracy-Widom distributions discussed earlier. It is worth noting that the expected complexity is a function of the required calculation complexity $n$, the number of MPI ranks used $m$, and the sample size $l$. Assuming a total FLOPs count of $\sim\mathcal{O}(n^3)$ in a worst-case scenario for Schur decomposition, repeated $l$ times, in reality each rank will only have to contribute 1-$m$th of the work. Note that while the QR algorithm is not done in parallel, repeating in $l$ times is embarrassingly parallel. So the total time complexity should be roughly:
+\begin{equation}
+ \sim\mathcal{O}\left(\frac{n^3\, l}{m}\right)
+\end{equation}
+which will be tested in the next section.
\section{Results}
Before the eigenvalues can be directly compared to a Tracy-Widom they must be scaled to match the existing distribution. It is possible to perform the scaling empirically, but a closed-form solution is available that makes things easier \cite{konig2005}:
@@ -265,7 +269,7 @@ Before the eigenvalues can be directly compared to a Tracy-Widom they must be sc
This specific transform is derived from the Wigner semicircular distribution mentioned earlier in section 2. Although it describes the global distribution, taking the extrema yields a bound for the maximum eigenvalue.
\subsection{Tracy-Widom Convergence}
-Following some software issues related to the OneAPI suite, the author was unable to produce enough samples in time to complete the report. However, a moment is appropriate to thank all of the teammates for being kind enough to share their data for analysis in this report. The following numbers are from Joe's runs but all of the analysis was done individually. Samples here are presented with respect to their matrix dimension $N$, number of samples $L$, skewness $S$ and excess kurtosis $K$. Taking, for example, different sample sizes for $N=1750,500$ yields a half-dozen examples of a clear trend emerging where the histograms tend towards a normal-\emph{ish} shape, shown in Figure \ref{fig:randoms}:
+Following some software issues related to the OneAPI suite, the author was unable to produce enough samples in time to complete this report. However, a moment is appropriate to thank all of the teammates for being kind enough to share their data for analysis in this report. The following numbers are from Joe's runs but the analysis was done individually. Samples here are presented with respect to their matrix dimension $N$, number of samples $L$, skewness $S$ and excess kurtosis $K$. Taking, for example, different sample sizes for $N=1750,500$ yields a half-dozen examples of a clear trend emerging where the histograms tend towards a normal-\emph{ish} shape, shown in Figure \ref{fig:randoms}:
\begin{figure}[H]
\centering
@@ -283,6 +287,7 @@ Despite the visuals, however, the metrics tell a bleaker story. Recall that the
\caption{Reconstructed distributions from the maximum number of samples $L_{max}$ for each size $N$. Table \ref{tbl:results} provides more information on the behaviour of skewness and excess kurtosis for the high-sample runs. Qualitatively, under filling seems prevalent at larger $N$ and a strong $-x$ tail is visible.}
\label{fig:big-ones}
\end{figure}
+The parameters calculated for the distributions are presented in Table \ref{tbl:results} for convenience:
\begin{table}[H]
\centering
@@ -302,21 +307,42 @@ Despite the visuals, however, the metrics tell a bleaker story. Recall that the
\label{tbl:results}
\end{table}
+Despite the significant increase in sample size ($\sim10\times$ at a minimum), the skewness and excess kurtosis do not converge to their expected values. Rather, the skewness diverges from the expected value of 0.2935, and the excess kurtosis has a minimum error of at least 200\% relative to the expected 0.1292 described earlier. These trends are shown below in Figure \ref{fig:errors}:
\begin{figure}[H]
\centering
\input{./figures/results/parameters.tex}
- \caption{Reconstructed distributions from the maximum number of samples $L_{max}$ for each size $N$. Table \ref{tbl:results} provides more information on the behaviour of skewness and excess kurtosis for the high-sample runs. Qualitatively, under filling seems prevalent at larger $N$ and a strong $-x$ tail is visible.}
+ \caption{Behaviour of the two parameters skewness $S$ and excess kurtosis $K$ as function of matrix size $N$ for a maximal number of samples $L$. Observed responses are shown in solid lines, with the expected values being horizontal dotted lines and the percent-error represented with dashed lines. Neither of the trends observed in the skewness or expected kurtosis are consistent with theory, and their behaviours cannot confirm the existence of a Tracy-Widom distribution from the calculations.}
\label{fig:errors}
\end{figure}
+The tendency of the skewness to diverge from zero as the matrix size increases does point to a non-Gaussian distribution being observed, but it cannot be concluded that it is a Tracy-Widom.
+
\subsection{Wall Times}
+Lastly, the wall time of running the simulations was investigated. These results were more aligned with the expected values of complexity. Two different perspectives are considered: the variation of sample size with a constant matrix size, and the vice-versa case. The results for the constant sample sizes is discussed first as it should correspond to the complexity mentioned in Section 4. Figure \ref{fig:N_walltimes} shows a complexity tending to $\mathcal{O}(n^3)$ (with slight variations over the matrix size domain) for all sample sizes:
+\begin{figure}[H]
+ \centering
+ \input{./figures/wall-times/N_walltimes.tex}
+ \caption{Wall times for different sample sizes $L$ as a function of the matrix size $N$. All runs were conducted using 128 MPI ranks for this figure. Wall times show a roughly $\mathcal{O}(n^3)$ scaling consistent between all sample sizes tested, although there is a magnitude difference between the fastest ($L=128$) and slowest ($L=4096$) runs.}
+ \label{fig:N_walltimes}
+\end{figure}
+
+The vice-versa case shows a different story, with a complexity closer to $\mathcal{O}(n)$. This makes intuitive sense, as MPI ranks can calculate different matrices of a common sample in parallel, explaining the rather weak coupling. Compare this to increasing the matrix size itself, which is solved in serial by one rank at time, making the scaling appear much more sensitive to changes in the independent variable. The trend is visualized below in Figure \ref{fig:walltimes}:
+
+\begin{figure}[H]
+ \centering
+ \input{./figures/wall-times/walltimes.tex}
+ \caption{Wall times for different matrix sizes $N$ as a function of the number of sampled eigenvalues $L$. All runs were conducted using 128 MPI ranks for this figure. Wall times show a roughly $\mathcal{O}(n)$ scaling consistent between all matrix sizes tested, although there was a $\sim2$ magnitude difference between the fastest ($N=1$) and slowest ($N=1750$) runs. Small deviations exist for low sample sizes.}
+ \label{fig:walltimes}
+\end{figure}
+
+\section{Conclusions}
+This work set out to reconstruct a Tracy-Widom distribution via the direct sampling of calculated eigenvalues of Gaussian orthogonal ensembles. A code leveraging MPI for distributed-memory parallelism and the MKL BLAS library for high-performance numerical methods was used to sample various numbers of ensembles, sizes of matrices, and various other factors to generate data and draw conclusions. While the worker-manager structure worked well for the batch computing of eigenvalues, the statistical results proved inconclusive. It can be said with confidence that the resulting distribution was non-Gaussian but it was not necessarily a Tracy-Widom distribution. This is because of the statistical testing, consisting of the skewness and excess kurtosis, were not in support of a Tracy-Widom distribution. The discrepancies showed at least one trend divergent to the expected value and therefore it is unlikely that further sampling of eigenvalues would mitigate this issue. Rather, it is likely that there is an inconsistency related to transforming the eigenvalues to fit the standard Tracy-Widom. The wall time scaling, however, was consistent with expectations and was invested with respect to both matrix and ensemble size.
+
\bibliographystyle{ieeetr}
\bibliography{refs.bib}
\end{document}
-
-