diff --git a/.gitattributes b/.gitattributes index 35b3d0bdb39160389a0138eebbf9bc1dad0c708b..00f10aea77ef536712309f8162f02311a1a80d37 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1526,7 +1526,6 @@ doc/papers/2009/SC-09/transpose.fig -text doc/papers/2010/SPM/IEEEbib.bst -text doc/papers/2010/SPM/Makefile -text doc/papers/2010/SPM/figures/LBA-small.jpg -text -doc/papers/2010/SPM/figures/correlation-triangle.fig -text doc/papers/2010/SPM/figures/correlation-triangle.pdf -text doc/papers/2010/SPM/figures/correlation-triangle.svg -text doc/papers/2010/SPM/figures/pastedpic_11252008_163347.png -text diff --git a/doc/papers/2010/SPM/Makefile b/doc/papers/2010/SPM/Makefile index 8368724ca36be8d96b588dab07eca2320c1bd5a7..eba742c283bdfd3814cd1a1a939a0f3838ff7e26 100644 --- a/doc/papers/2010/SPM/Makefile +++ b/doc/papers/2010/SPM/Makefile @@ -2,7 +2,7 @@ TEX_SOURCES = spm.tex BIB_SOURCES = spm.bib -FIG_SOURCES = figures/correlation-triangle.fig +FIG_SOURCES = JGR_SOURCES = diff --git a/doc/papers/2010/SPM/figures/correlation-triangle.fig b/doc/papers/2010/SPM/figures/correlation-triangle.fig deleted file mode 100644 index 2f05d430cde0c495d7d6e6524783ba44f0c3d2a0..0000000000000000000000000000000000000000 --- a/doc/papers/2010/SPM/figures/correlation-triangle.fig +++ /dev/null @@ -1,88 +0,0 @@ -#FIG 3.2 Produced by xfig version 3.2.5 -Landscape -Center -Inches -Letter -100.00 -Single --2 -1200 2 -0 32 #c0ffc0 -0 33 #ffffc0 -0 34 #c0c0ff -0 35 #c0c0c0 -0 36 #f0c0c0 -2 1 0 3 0 35 40 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 3.00 150.00 150.00 - 6000 9075 6675 9075 -2 1 0 3 0 35 40 -1 -1 0.000 0 0 -1 1 0 2 - 2 1 3.00 150.00 150.00 - 9900 4275 9900 3600 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 2400 8100 2400 7500 9000 7500 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 3000 8100 3000 6900 9000 6900 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 3600 8100 3600 6300 9000 6300 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 4800 8100 4800 5100 9000 5100 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 5400 8100 5400 4500 9000 4500 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 6000 8100 6000 3900 9000 3900 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 7200 8100 7200 2700 9000 2700 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 7800 8100 7800 2100 9000 2100 -2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 8400 8100 8400 1500 9000 1500 -2 1 0 5 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 4200 8100 4200 5700 9000 5700 -2 1 0 5 0 7 40 -1 -1 0.000 0 0 -1 0 0 3 - 6600 8100 6600 3300 9000 3300 -2 3 0 5 0 31 60 -1 20 0.000 0 0 -1 0 0 27 - 9000 8100 9000 900 8400 900 8400 1500 7800 1500 7800 2100 - 7200 2100 7200 2700 6600 2700 6600 3300 6000 3300 6000 3900 - 5400 3900 5400 4500 4800 4500 4800 5100 4200 5100 4200 5700 - 3600 5700 3600 6300 3000 6300 3000 6900 2400 6900 2400 7500 - 1800 7500 1800 8100 9000 8100 -2 2 0 5 0 4 50 -1 20 0.000 0 0 -1 0 0 5 - 6600 3300 9000 3300 9000 5700 6600 5700 6600 3300 -4 1 0 40 -1 18 30 0.0000 4 360 360 2100 7950 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 2700 7350 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 3300 6750 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 3900 6150 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 4500 5550 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 5100 4950 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 5700 4350 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 6300 3750 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 6900 3150 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 7500 2550 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 8100 1950 A\001 -4 1 0 40 -1 18 30 0.0000 4 360 1605 5100 9225 station\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 2100 8625 0\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 2700 8625 1\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 3900 8625 3\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 4500 8625 4\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 5100 8625 5\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 5700 8625 6\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 6300 8625 7\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 6900 8625 8\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 7500 8625 9\001 -4 1 0 40 -1 16 30 0.0000 4 345 540 8100 8625 10\001 -4 1 0 40 -1 16 30 0.0000 4 345 270 3300 8625 2\001 -4 1 0 40 -1 18 30 1.5708 4 360 1605 10050 5175 station\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 7950 0\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 7350 1\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 6150 3\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 4950 5\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 4350 6\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 3750 7\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 3150 8\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 2550 9\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 5550 4\001 -4 0 0 40 -1 16 30 0.0000 4 345 270 9225 6750 2\001 -4 0 0 40 -1 16 30 0.0000 4 345 540 9225 1950 10\001 -4 0 0 40 -1 16 30 0.0000 4 345 540 9225 1350 11\001 -4 1 0 40 -1 16 30 0.0000 4 345 540 8700 8625 11\001 -4 1 0 40 -1 18 30 0.0000 4 360 360 8700 1350 A\001 diff --git a/doc/papers/2010/SPM/figures/correlation-triangle.pdf b/doc/papers/2010/SPM/figures/correlation-triangle.pdf index 7f09c44dd1adee0b07988f8c0ea05f589a5150fa..72721e6fd0f263fa4515e0c9fee7fc035c9ce1f8 100644 Binary files a/doc/papers/2010/SPM/figures/correlation-triangle.pdf and b/doc/papers/2010/SPM/figures/correlation-triangle.pdf differ diff --git a/doc/papers/2010/SPM/figures/correlation-triangle.svg b/doc/papers/2010/SPM/figures/correlation-triangle.svg index 8c07803588bfd0e6d62977dc4bb03a2b33ad761a..981cb9c2397bc9d07854c5ba6b571b0964c7bcb3 100644 --- a/doc/papers/2010/SPM/figures/correlation-triangle.svg +++ b/doc/papers/2010/SPM/figures/correlation-triangle.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Creator: fig2dev Version 3.2 Patchlevel 5 --> -<!-- CreationDate: Tue Nov 25 14:11:34 2008 --> +<!-- CreationDate: Wed Jun 24 14:57:21 2009 --> <!-- Magnification: 1.000 --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" @@ -10,16 +10,16 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="6.4in" - height="6.5in" - viewBox="1746 1446 7719 7794" + width="6.9in" + height="7.0in" + viewBox="1746 846 8319 8394" id="svg2" sodipodi:version="0.32" inkscape:version="0.46" sodipodi:docname="correlation-triangle.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape"> <metadata - id="metadata143"> + id="metadata121"> <rdf:RDF> <cc:Work rdf:about=""> @@ -30,18 +30,18 @@ </rdf:RDF> </metadata> <defs - id="defs141"> + id="defs119"> <inkscape:perspective sodipodi:type="inkscape:persp3d" - inkscape:vp_x="0 : 292.5 : 1" + inkscape:vp_x="0 : 315 : 1" inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_z="576 : 292.5 : 1" - inkscape:persp3d-origin="288 : 195 : 1" - id="perspective145" /> + inkscape:vp_z="621 : 315 : 1" + inkscape:persp3d-origin="310.5 : 210 : 1" + id="perspective123" /> </defs> <sodipodi:namedview - inkscape:window-height="1125" - inkscape:window-width="1920" + inkscape:window-height="726" + inkscape:window-width="645" inkscape:pageshadow="2" inkscape:pageopacity="0.0" guidetolerance="10.0" @@ -52,495 +52,546 @@ pagecolor="#ffffff" id="base" showgrid="false" - inkscape:zoom="1.5264957" - inkscape:cx="288" - inkscape:cy="292.5" + inkscape:zoom="0.78412698" + inkscape:cx="310.5" + inkscape:cy="315" inkscape:window-x="0" - inkscape:window-y="25" + inkscape:window-y="49" inkscape:current-layer="svg2" /> - <rect - id="rect2449" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="4497.5557" - x="4803.749" /> - <rect - id="rect2447" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="600" - width="600" - y="3892.5679" - x="5421.3672" /> - <rect - id="rect6" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="6300" - x="7200" /> - <rect - id="rect8" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="6300" - x="6000" /> - <rect - id="rect10" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="6300" - x="4800" /> - <rect - id="rect12" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="6300" - x="3600" /> - <polygon - id="polygon14" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - points="2400,8100 2400,6900 3000,6900 3000,6300 3600,6300 3600,8100 2400,8100 " /> - <rect - id="rect16" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="600" - width="600" - y="7500" - x="1800" /> - <polygon - id="polygon18" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - points="3600,6300 3600,5700 4200,5700 4200,5100 4800,5100 4800,6300 3600,6300 " /> - <rect - id="rect24" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="4500" - x="6000" /> - <rect - id="rect26" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="4500" - x="7200" /> - <rect - id="rect28" - style="fill:#6c6753;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - rx="0" - height="1800" - width="1200" - y="2700" - x="7200" /> - <polygon - id="polygon30" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - points="6000,4500 6000,3300 6600,3300 6600,2700 7200,2700 7200,4500 6000,4500 " /> - <polygon - id="polygon32" - style="fill:#c8c4b7;stroke:#000000;stroke-width:60;stroke-linecap:butt;stroke-linejoin:miter" - points="7200,2700 7200,2100 7800,2100 7800,1500 8400,1500 8400,2700 7200,2700 " /> - <polyline - id="polyline34" - style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" - points="6000,9075 6525,9075 " /> - <polygon - id="polygon36" - style="fill:#000000;stroke:#000000;stroke-width:30" - points="6490,9150 6678,9075 6490,9000 6528,9075 6490,9150 " /> - <polyline - id="polyline38" - style="stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter" - points="9300,4275 9300,3749 " /> - <polygon - id="polygon40" - style="fill:#000000;stroke:#000000;stroke-width:30" - points="9375,3784 9300,3597 9225,3784 9300,3747 9375,3784 " /> - <polyline - id="polyline42" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="3000,6900 3000,8100 " /> - <polyline - id="polyline44" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="2400,7500 8400,7500 " /> - <polyline - id="polyline46" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="3000,6900 8400,6900 " /> - <polyline - id="polyline48" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="4200,5700 4200,8100 " /> - <polyline - id="polyline50" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="5400,4500 5400,8100 " /> - <polyline - id="polyline52" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="6600,3300 6600,8100 " /> - <polyline - id="polyline54" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="7800,2100 7800,8100 " /> - <polyline - id="polyline56" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="4200,5700 8400,5700 " /> - <polyline - id="polyline60" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="6000,3900 8400,3900 " /> - <polyline - id="polyline62" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="5400,4500 6000,4500 " /> - <polyline - id="polyline64" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="6600,3300 8400,3300 " /> - <polyline - id="polyline66" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="7800,2100 8400,2100 " /> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text68" - font-size="360" - font-weight="bold" - font-style="normal" - y="7950" - x="2100" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text70" - font-size="360" - font-weight="bold" - font-style="normal" - y="7350" - x="2700" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text72" - font-size="360" - font-weight="bold" - font-style="normal" - y="6750" - x="3300" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text74" - font-size="360" - font-weight="bold" - font-style="normal" - y="6150" - x="3900" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text76" - font-size="360" - font-weight="bold" - font-style="normal" - y="5550" - x="4500" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text78" - font-size="360" - font-weight="bold" - font-style="normal" - y="4950" - x="5100" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text80" - font-size="360" - font-weight="bold" - font-style="normal" - y="4350" - x="5700" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text82" - font-size="360" - font-weight="bold" - font-style="normal" - y="3750" - x="6300" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text84" - font-size="360" - font-weight="bold" - font-style="normal" - y="3150" - x="6900" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text86" - font-size="360" - font-weight="bold" - font-style="normal" - y="2550" - x="7500" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text88" - font-size="360" - font-weight="bold" - font-style="normal" - y="1950" - x="8100" - xml:space="preserve">A</text> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text90" - font-size="360" - font-weight="bold" - font-style="normal" - y="9225" - x="5100" - xml:space="preserve">station</text> <g - style="stroke:#000000;stroke-width:0.025in" - id="g92" - transform="matrix(-3.6732199e-6,-1,1,-3.6732199e-6,9450,5175)"> - <text - style="font-size:360px;font-style:normal;font-weight:bold;text-anchor:middle;fill:#000000;stroke:#000000;font-family:Helvetica" - id="text94" + style="stroke-width:.025in; stroke:black; fill:none" + id="g4"> +<!-- Line --> <polygon + points="9000,8100 9000,900 8400,900 8400,1500 7800,1500 7800,2100 7200,2100 7200,2700 6600,2700 6600,3300 6000,3300 6000,3900 5400,3900 5400,4500 4800,4500 4800,5100 4200,5100 4200,5700 3600,5700 3600,6300 3000,6300 3000,6900 2400,6900 2400,7500 1800,7500 1800,8100 9000,8100 " + style="stroke:#000000;stroke-width:60; stroke-linejoin:miter; stroke-linecap:butt; fill:#ffd600; " + id="polygon6" /> +<!-- Line: box --> <rect + x="6600" + y="3300" + width="2400" + height="2400" + rx="0" + style="stroke:#000000;stroke-width:60; stroke-linejoin:miter; stroke-linecap:butt; fill:#ff0000; " + id="rect8" /> +<!-- Line --> <polyline + points="6000,9075 6525,9075 " + style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline10" /> +<!-- Arrowhead on XXXpoint 6000 9075 - 6720 9075--> <polygon + points="6490 9150 6678 9075 6490 9000 6528 9075 6490 9150 " + style="stroke:#000000;stroke-width:30; fill:#000000;" + id="polygon12" /> +<!-- Line --> <polyline + points="9900,4275 9900,3749 " + style="stroke:#000000;stroke-width:30; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline14" /> +<!-- Arrowhead on XXXpoint 9900 4275 - 9900 3555--> <polygon + points="9975 3784 9900 3597 9825 3784 9900 3747 9975 3784 " + style="stroke:#000000;stroke-width:30; fill:#000000;" + id="polygon16" /> +<!-- Line --> <polyline + points="2400,8100 2400,7500 9000,7500 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline18" /> +<!-- Line --> <polyline + points="3000,8100 3000,6900 9000,6900 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline20" /> +<!-- Line --> <polyline + points="3600,8100 3600,6300 9000,6300 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline22" /> +<!-- Line --> <polyline + points="4800,8100 4800,5100 9000,5100 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline24" /> +<!-- Line --> <polyline + points="5400,8100 5400,4500 9000,4500 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline26" /> +<!-- Line --> <polyline + points="6000,8100 6000,3900 9000,3900 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline28" /> +<!-- Line --> <polyline + points="7200,8100 7200,2700 9000,2700 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline30" /> +<!-- Line --> <polyline + points="7800,8100 7800,2100 9000,2100 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline32" /> +<!-- Line --> <polyline + points="8400,8100 8400,1500 9000,1500 " + style="stroke:#000000;stroke-width:15; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline34" /> +<!-- Line --> <polyline + points="4200,8100 4200,5700 9000,5700 " + style="stroke:#000000;stroke-width:60; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline36" /> +<!-- Line --> <polyline + points="6600,8100 6600,3300 9000,3300 " + style="stroke:#000000;stroke-width:60; stroke-linejoin:miter; stroke-linecap:butt; " + id="polyline38" /> +<!-- Text --> <text + xml:space="preserve" + x="2100" + y="7950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text40">A</text> +<!-- Text --> <text + xml:space="preserve" + x="2700" + y="7350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text42">A</text> +<!-- Text --> <text + xml:space="preserve" + x="3300" + y="6750" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text44">A</text> +<!-- Text --> <text + xml:space="preserve" + x="3900" + y="6150" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text46">A</text> +<!-- Text --> <text + xml:space="preserve" + x="4500" + y="5550" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text48">A</text> +<!-- Text --> <text + xml:space="preserve" + x="5100" + y="4950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text50">A</text> +<!-- Text --> <text + xml:space="preserve" + x="5700" + y="4350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text52">A</text> +<!-- Text --> <text + xml:space="preserve" + x="6300" + y="3750" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text54">A</text> +<!-- Text --> <text + xml:space="preserve" + x="6900" + y="3150" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" font-size="360" + text-anchor="middle" + id="text56">A</text> +<!-- Text --> <text + xml:space="preserve" + x="7500" + y="2550" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" font-weight="bold" + font-size="360" + text-anchor="middle" + id="text58">A</text> +<!-- Text --> <text + xml:space="preserve" + x="8100" + y="1950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text60">A</text> +<!-- Text --> <text + xml:space="preserve" + x="5100" + y="9225" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text62">station</text> +<!-- Text --> <text + xml:space="preserve" + x="2100" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text64">0</text> +<!-- Text --> <text + xml:space="preserve" + x="2700" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text66">1</text> +<!-- Text --> <text + xml:space="preserve" + x="3900" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text68">3</text> +<!-- Text --> <text + xml:space="preserve" + x="4500" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text70">4</text> +<!-- Text --> <text + xml:space="preserve" + x="5100" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" font-style="normal" - y="0" - x="0" - xml:space="preserve">station</text> + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text72">5</text> +<!-- Text --> <text + xml:space="preserve" + x="5700" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text74">6</text> +<!-- Text --> <text + xml:space="preserve" + x="6300" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text76">7</text> +<!-- Text --> <text + xml:space="preserve" + x="6900" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text78">8</text> +<!-- Text --> <text + xml:space="preserve" + x="7500" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text80">9</text> +<!-- Text --> <text + xml:space="preserve" + x="8100" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text82">10</text> +<!-- Text --> <text + xml:space="preserve" + x="3300" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text84">2</text> +<!-- Text --> <g + transform="translate(10050,5175) rotate(-90.00021046)" + id="g86"> + <text + xml:space="preserve" + x="0" + y="0" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text88">station</text> + </g> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="7950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text90">0</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="7350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text92">1</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="6150" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text94">3</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="4950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text96">5</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="4350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text98">6</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="3750" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text100">7</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="3150" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text102">8</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="2550" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text104">9</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="5550" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text106">4</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="6750" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text108">2</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="1950" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text110">10</text> +<!-- Text --> <text + xml:space="preserve" + x="9225" + y="1350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="start" + id="text112">11</text> +<!-- Text --> <text + xml:space="preserve" + x="8700" + y="8625" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="normal" + font-size="360" + text-anchor="middle" + id="text114">11</text> +<!-- Text --> <text + xml:space="preserve" + x="8700" + y="1350" + stroke="#000000" + fill="#000000" + font-family="Helvetica" + font-style="normal" + font-weight="bold" + font-size="360" + text-anchor="middle" + id="text116">A</text> </g> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text96" - font-size="360" - font-weight="normal" - font-style="normal" - y="7950" - x="8625" - xml:space="preserve">0</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text98" - font-size="360" - font-weight="normal" - font-style="normal" - y="7350" - x="8625" - xml:space="preserve">1</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text100" - font-size="360" - font-weight="normal" - font-style="normal" - y="6150" - x="8625" - xml:space="preserve">3</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text102" - font-size="360" - font-weight="normal" - font-style="normal" - y="4950" - x="8625" - xml:space="preserve">5</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text104" - font-size="360" - font-weight="normal" - font-style="normal" - y="4350" - x="8625" - xml:space="preserve">6</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text106" - font-size="360" - font-weight="normal" - font-style="normal" - y="3750" - x="8625" - xml:space="preserve">7</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text108" - font-size="360" - font-weight="normal" - font-style="normal" - y="3150" - x="8625" - xml:space="preserve">8</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text110" - font-size="360" - font-weight="normal" - font-style="normal" - y="2550" - x="8625" - xml:space="preserve">9</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text112" - font-size="360" - font-weight="normal" - font-style="normal" - y="5550" - x="8625" - xml:space="preserve">4</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text114" - font-size="360" - font-weight="normal" - font-style="normal" - y="6750" - x="8625" - xml:space="preserve">2</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:start;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text116" - font-size="360" - font-weight="normal" - font-style="normal" - y="1950" - x="8625" - xml:space="preserve">10</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text118" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="2100" - xml:space="preserve">0</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text120" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="2700" - xml:space="preserve">1</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text122" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="3900" - xml:space="preserve">3</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text124" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="4500" - xml:space="preserve">4</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text126" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="5100" - xml:space="preserve">5</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text128" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="5700" - xml:space="preserve">6</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text130" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="6300" - xml:space="preserve">7</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text132" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="6900" - xml:space="preserve">8</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text134" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="7500" - xml:space="preserve">9</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text136" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="8100" - xml:space="preserve">10</text> - <text - style="font-size:360px;font-style:normal;font-weight:normal;text-anchor:middle;fill:#000000;stroke:#000000;stroke-width:0.025in;font-family:Helvetica" - id="text138" - font-size="360" - font-weight="normal" - font-style="normal" - y="8625" - x="3300" - xml:space="preserve">2</text> - <polyline - transform="translate(0.8238523,-608.65589)" - id="polyline2453" - style="stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter" - points="4200,5700 8400,5700 " /> </svg> diff --git a/doc/papers/2010/SPM/spm.tex b/doc/papers/2010/SPM/spm.tex index 6f59ccb2820b47582a74b247053fa8d9f8231b04..e38bf8b8dfdc9dedd096d3efa2388e88cf83ab46 100644 --- a/doc/papers/2010/SPM/spm.tex +++ b/doc/papers/2010/SPM/spm.tex @@ -586,126 +586,82 @@ that share a cache should be tailored accordingly. On GPUs, for example, this can be done by \emph{coalescing} memory accesses. This means that different concurrent threads read subsequent memory locations. This can be counter-intuitive, since traditionally, it was -better to have linear memory access patterns within a thread. -In the next section, we explain the techniques described above by applying them to the correlator application. +better to have linear memory access patterns within a thread. In the +next section, we explain the techniques described above by applying +them to the correlator application. \section{Optimizing the correlator} +% TODO add text about mapping from alg to arch + +\begin{figure}[t] +\begin{center} +\includegraphics[width=4.2cm]{figures/correlation-triangle.pdf} +\end{center} +\vspace{-0.5cm} +\caption{An example correlation triangle.} +\label{fig-correlation} +\end{figure} +Although in reality the receivers are dual-polarized, and the samples are complex numbers, +we use single-polarized real samples in the following example for simplicity. An unoptimized correlator would read the samples from two receivers and -multiply them, requiring two memory reads for one complex multiplication. +multiply them, requiring two memory loads for one multiplication. The correlator can be optimized by reusing a sample that is read from memory as often as possible, by using it for multiple correlations (see -Figure~\ref{fig:correlator-triangle}). +Figure~\ref{fig-correlation}). +The figure is triangular, because we compute +the correlation of each pair of receivers only once. The squares labeled \emph{A} are +autocorrelations. + For example, the samples from receivers 8, 9, 10, and 11 can be correlated with the samples from receivers 4, 5, 6, and 7 (the red square in the figure), -using each fetched sample for four complex multiplications. -This way, eight memory accesses are required for sixteen complex +reusing each fetched sample four times. +This way, eight samples are read from memory for 16 multiplications, reducing the amount of memory operations already by a factor of four. -Correlating even higher numbers of receivers at one go would reduce the +Correlating even higher numbers of receivers simultaneously would reduce the memory bandwidth usage further, but the maximum number of receivers that can -be correlated this way is quite limited by the size of the register file. -The accumulated correlations are best kept in registers, and the number of +be correlated this way is limited by the number of registers that an architecture has. +The accumulated correlations are also best kept in registers, and the number of required registers grows rapidly with the number of receiver inputs. -The example above already requires sixteen complex accumulators. -Additional registers are needed to load samples from memory. +The example above already requires 16 accumulators. +Additional registers are needed to load samples from memory (8 in this case). To obtain good performance, it is important to tune the tile size to the architecture. -Caches and memory prefetch units can also improve the performance. -However, a cache-size dependent tradeoff must be made. +%Caches and memory prefetch units can also improve the performance. +%However, a cache-size dependent tradeoff must be made. %On the one hand, correlating and integrating over long periods of time %is good for pipelined FPU operation, on the other hand, the - -%- optimaliseren van het algorithme: tiles, etc - -% TODO add text about mapping from alg to arch - -\begin{figure}[t] -\begin{center} -\includegraphics[width=4.2cm]{figures/correlation-triangle.pdf} -\end{center} -\vspace{-0.5cm} -\caption{An example correlation triangle.} -\label{fig-correlation} -\end{figure} - -An important optimization that we implemented is the reduction -of memory loads by the correlator. -A sample can be used multiple times by correlating it -with the samples from multiple other receivers in the same loop iteration. -For example, a sample from receiver A in the X polarization -that is loaded into a register pair can be correlated with the X and -Y polarizations of receivers B, C and D, using it six times. -Figure~\ref{fig-correlation} shows how we correlate multiple -receivers at the same time. Each square represents the XX, XY, -YX, and YY correlations of the receivers as indicated by row and -column number. The figure is triangular, because we compute -the correlation of each pair of receivers only once. The squares labeled \emph{A} are -autocorrelations, which can be treated specially since they require only half -the amount of computations. -The triangle is divided into larger tiles, in this case -2x3 tiles (the dark gray boxes), but arbitrary sizes are possible. -A tile is correlated as a unit. For example, the lower -right-hand-side rectangle correlates receivers 9 and 10 with receivers -0, 1, and 2. - -It is important to tune the tile size to the architecture. We want to -make the tile size as large as possible, while still fitting in the -register file. This offers the highest level of data reuse. -If we have a $w \times h$ tile size, the number of operations is given by $flops = 32wh$. -The number of bytes that has to loaded from memory is $16(w+h)$. -The minimum number of registers that is required is $4 (1 + min(w,h)) + 8 w h$. -This is the total number of registers, including accumulators, while reusing -registers if a value is no longer needed (hence the $min$ operation). However, -this formula does not count additional registers that could be needed for data prefetching, -address calculations and loop counters. -The number of registers is expressed in single-precision float registers. If an architecture has vector -registers, the result can be divided by the vector length. -Table~\ref{tile-size-table} shows the properties of different tile sizes. - -Despite the division of the correlation triangle in tiles, there -still is opportunity for additional data reuse \emph{between} tiles. -The tiles +Even when dividing the correlation triangle in tiles there still is +opportunity for additional data reuse \emph{between} tiles. The tiles within a row or column in the triangle still need the same samples. -In -addition to registers, caches can thus also be used to increase data -reuse. Since we know exactly what data can be reused at what moment, we -found it is important to have direct influence on the caches and the thread scheduler. This -way, we can make sure that tiles in same row or column are calculated -at the same time by different threads. -Because the algorithm is -extremely data intensive, the resulting optimized implementation on -many-cores is typically limited by the architecture's memory -bandwidth. The memory aspects of the algorithm are twofold. -There is an algorithmic part, the tile size, which is limited -by the number of registers. The second aspect is architectural in nature: the cache -sizes, cache hierarchy and hit ratio. Together, these two aspects dictate the -memory bandwidth that is needed to keep the FPUs busy. - -\begin{table} -\begin{center} -{\small -\begin{tabular}{l|r|r|r|r} -tile & floating point & memory loads & arithmetic & minimum nr. \\ -size & operations & (bytes) & intensity & registers (floats) \\ -\hline -1x1 & 32 & 32 & 1.00 & 16 \\ -1x2 & 64 & 48 & 1.33 & 24 \\ -2x2 & 128 & 64 & 2.00 & 44 \\ -3x2 & 192 & 80 & 2.40 & 60 \\ -3x3 & 288 & 96 & 3.00 & 88 \\ -4x3 & 384 & 112 & 3.43 & 112 \\ -4x4 & 512 & 128 & 4.00 & 148 \\ -\end{tabular} -} %\small -\end{center} -\vspace{-0.5cm} -\caption{Properties of different tile sizes.} -\label{tile-size-table} -\end{table} +In addition to registers, caches can thus also be used to increase +data reuse. + +%% \begin{table} +%% \begin{center} +%% {\small +%% \begin{tabular}{l|r|r|r|r} +%% tile & floating point & memory loads & arithmetic & minimum nr. \\ +%% size & operations & (bytes) & intensity & registers (floats) \\ +%% \hline +%% 1x1 & 32 & 32 & 1.00 & 16 \\ +%% 1x2 & 64 & 48 & 1.33 & 24 \\ +%% 2x2 & 128 & 64 & 2.00 & 44 \\ +%% 3x2 & 192 & 80 & 2.40 & 60 \\ +%% 3x3 & 288 & 96 & 3.00 & 88 \\ +%% 4x3 & 384 & 112 & 3.43 & 112 \\ +%% 4x4 & 512 & 128 & 4.00 & 148 \\ +%% \end{tabular} +%% } %\small +%% \end{center} +%% \vspace{-0.5cm} +%% \caption{Properties of different tile sizes.} +%% \label{tile-size-table} +%% \end{table} It is important to realize that the correlator itself is \emph{trivially parallel}, since tens of thousands of