From b8efe0b9929737dc051b9a73bd3328396053f529 Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Tue, 9 Jan 2024 17:38:41 -0800 Subject: [PATCH 1/6] Update UMT submodule to v5.3.0a version and update docs to current conduit blueprint benchmark problem. --- doc/sphinx/06_umt/umt.rst | 84 +++++++++++++++++++-------------------- umt | 2 +- 2 files changed, 41 insertions(+), 45 deletions(-) diff --git a/doc/sphinx/06_umt/umt.rst b/doc/sphinx/06_umt/umt.rst index c4953094..8efab0a4 100644 --- a/doc/sphinx/06_umt/umt.rst +++ b/doc/sphinx/06_umt/umt.rst @@ -18,30 +18,24 @@ Characteristics Problem ------- -The benchmark problem is a single node sweep performance problem (SPP) -on a 3D unstructured mesh. Two variants of interest exist: - -- SPP 1, a configuration with a high number of unknowns per spatial - element with 72 directions and 128 energy bins to solve per mesh - cell. -- SPP 2, a configuration with a low number of unknowns per spatial - element with 32 directions and 16 energy bins to solve per mesh +The benchmark problem is a single node sweep performance problem (SPP) on a 3D unstructured mesh. Two variants of interest exist: + +- SPP 1, a configuration with a high number of unknowns per spatial element with 72 directions and 128 energy bins to solve per + mesh cell. +- SPP 2, a configuration with a low number of unknowns per spatial element with 32 directions and 16 energy bins to solve per mesh cell. SPP 2 is still a work in progress. Figure of Merit --------------- -The Figure of Merit is defined as the number of unknowns solved per -second. The number of unknowns solved by UMT is defined as: +The Figure of Merit is defined as the number of unknowns solved per second, which is calculated by: .. code-block:: - number of unknowns = <# mesh cells> * <# sub-cell 'corner' elements per cell> * - <# directions> * + number of unknowns = <# mesh cells> * <# sub-cell 'corner' elements per cell> * <# directions> * -The number of corners in a mesh cell is 8 for the 3D unstructured mesh -problem. (For a 2D mesh problem it would be 4.) +The number of corners in a mesh cell is 8 for the 3D unstructured mesh problem. (For a 2D mesh problem it would be 4.) Building @@ -62,6 +56,7 @@ Build Requirements * C/C++ compiler(s) with support for C++11 and Fortran compiler(s) with support for F2003. * `CMake 3.18X `_ +* `Conduit v0.8.9 (pending), or the develop branch as of 1/1/2024. `_ * `Spack `_ (optional) * MPI 3.0+ @@ -70,55 +65,49 @@ Build Requirements * `mpich `_ * `mvapich2 `_ -Additional third party libraries requirements are noted in `DEPENDENCIES.md `_ - -If OpenMP threading is used, the MPI implementation must support MPI_THREAD_MULTIPLE. - -Instructions for building the code can be found in the UMT github repo -under `BUILDING.md `_ - -Generating the problem input -============================ +* For CPU threading support, a Fortran compiler that support OpenMP 4.5, and an MPI implementation that supports MPI_THREAD_MULTIPLE. +* For GPU support, a Fortran compiler will full support for OpenMP 4.5 target offloading. -For strong scaling on a CPU the memory footprint of UMT should be between 45%-55% of the computational device's main memory. -Python scripts in the github repo /benchmarks directory are provided to assist in generating a series of runs with UMT. - -Example of creating a mesh sized to use 128GB of memory (50% of a test node with 256GB). -Will refine the mesh once, splitting each mesh cell edge into 27 edges and produce a mesh called 'refined_mesh.mesh'. - -.. code-block:: - - makeUnstructuredBox -r 27 -o umt_spp1.mesh +Instructions for building the code can be found in the UMT github repo under +`BUILDING.md `_ Running ======= -To run test problem, select SPP 1 or SPP 2 using the -b command line switch. -For example, +To run the test problems, select SPP 1 or SPP 2 using the -b command line switch. Select the mesh size to generate by using +'-d x,y,z' where x,y,z is the number of tiles to produce in each cartesian axis. Use '-B global' to specify that the size +is for the global mesh, which is suitable for strong scaling studies. If performing a weak scaling study, you can +specify '-B local' to specify the size of the mesh per rank instead. + +Benchmark problems should target roughly half the node memory (for CPUs) or half the device memory (for GPUs). + +For example, to create a global mesh of size 20,20,20 tiles: .. code-block:: - mpirun -n 1 test_driver -c 1 -b $num -i ./refined_mesh.mesh + mpirun -n 1 test_driver -B global -d 20,20,20 -b $num where num = 1 for SPP 1 or num = 2 for SPP 2. Example FOM Results =================== -Results from Branson are provided on the following systems: +Results from UMT are provided on the following systems: * Crossroads (see :ref:`GlobalSystemATS3`) * Sierra (see :ref:`GlobalSystemATS2`) Strong scaling data for SPP 1 on Crossroads is shown in the table and figure below -.. csv-table:: Strong scaling of SPP 1 on Crossroads +TODO - these are for the old benchmark problem and need to be updated. + +.. todo csv-table:: Strong scaling of SPP 1 on Crossroads :file: spp1_strong_scaling_cts2_abridged.csv :align: center :widths: 8, 10, 10 :header-rows: 1 -.. figure:: spp1_strong_scaling_cts2.png +.. todo figure:: spp1_strong_scaling_cts2.png :alt: Strong scaling of SPP 1 on Crossroads :align: center :scale: 50% @@ -140,14 +129,13 @@ Strong scaling data for SPP 1 on Crossroads is shown in the table and figure bel Throughput study of SPP 1 performance on Sierra, single GPU, as a function of problem size: -.. TODO - add runtime in this table?? -.. csv-table:: Throughput for SPP 1 on Sierra +.. todo csv-table:: Throughput for SPP 1 on Sierra :file: spp1_throughput_V100.csv :align: center :widths: 10, 10 :header-rows: 1 -.. figure:: spp1_throughput_V100.png +.. todo figure:: spp1_throughput_V100.png :alt: Throughput of SPP 1 on Sierra :align: center @@ -156,7 +144,6 @@ Throughput study of SPP 1 performance on Sierra, single GPU, as a function of pr .. note:: Performance data for SPP 2 coming soon. -.. TODO - add runtime in this table?? .. todo csv-table:: SPP 2 throughput on Power9 and V100 :file: umtsp2_throughput_gpu.csv :align: center @@ -167,11 +154,20 @@ Throughput study of SPP 1 performance on Sierra, single GPU, as a function of pr :alt: SPP 2 GPU throughput as a function of problem size :align: center + Verification of Results ======================= -Correctness on the SPP 1 and SPP 2 problems are checked by verifying that all incoming and outgoing energy is properly tracked by the solver. -The test driver will automatically check this value at the end of the run and output if the test is a pass or fail. +UMT will perform a verification step at the end of the benchmark problem and print out a PASS or FAIL. + +Example output: + +.. code-block:: + + RESULT CHECK PASSED: Energy check (this is relative to total energy) 1.26316e-15 within tolerance of +/- 1e-09; check './UMTSPP1.csv' for tally details + +Additional diagnostic data on this energy check, as well as throughput and memory use, is provided in a UMTSPP#.csv file that +UMT writes out at run end. References ========== diff --git a/umt b/umt index 643f42b6..ed70b58e 160000 --- a/umt +++ b/umt @@ -1 +1 @@ -Subproject commit 643f42b6c39ca709dfcbc5e88f4810a0934922cb +Subproject commit ed70b58e77b6dfb29b6b7f01d53bde2a02b7f218 From 825307c50b3184f215a156609d4523f9a7e731b9 Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Fri, 12 Jan 2024 12:49:31 -0800 Subject: [PATCH 2/6] Update CTS2 plots --- .../06_umt/spp1_strong_scaling_cts2.csv | 226 +++++++++--------- doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp | 4 +- .../spp1_strong_scaling_cts2_abridged.csv | 11 +- .../spp1_strong_scaling_cts2_abridged.gp | 26 ++ doc/sphinx/06_umt/spp1_throughput_V100.gp | 0 .../06_umt/spp2_strong_scaling_cts2.csv | 113 +++++++++ doc/sphinx/06_umt/spp2_strong_scaling_cts2.gp | 26 ++ .../spp2_strong_scaling_cts2_abridged.csv | 7 + .../spp2_strong_scaling_cts2_abridged.gp | 26 ++ .../06_umt/umtsp2_strong_scaling_cpu.csv | 3 - doc/sphinx/06_umt/umtsp2_throughput_gpu.csv | 22 -- 11 files changed, 319 insertions(+), 145 deletions(-) mode change 100644 => 100755 doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp create mode 100755 doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.gp mode change 100644 => 100755 doc/sphinx/06_umt/spp1_throughput_V100.gp create mode 100644 doc/sphinx/06_umt/spp2_strong_scaling_cts2.csv create mode 100755 doc/sphinx/06_umt/spp2_strong_scaling_cts2.gp create mode 100644 doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.csv create mode 100755 doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.gp delete mode 100644 doc/sphinx/06_umt/umtsp2_strong_scaling_cpu.csv delete mode 100644 doc/sphinx/06_umt/umtsp2_throughput_gpu.csv diff --git a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv index 96c846c1..a464dc1e 100644 --- a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv +++ b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv @@ -1,113 +1,113 @@ -Cores, Actual, Ideal -1,19698510.52,19698510.52 -2,27160628.25,39397021.03 -3,40479813.88,59095531.55 -4,54727290.08,78794042.07 -5,68616446.84,98492552.59 -6,82197798.96,118191063.1 -7,96212914.42,137889573.6 -8,109870795.7,157588084.1 -9,118887361.1,177286594.7 -10,129166721.8,196985105.2 -11,144761944.3,216683615.7 -12,150322737.7,236382126.2 -13,172821321.9,256080636.7 -14,186012781,275779147.2 -15,196616933.8,295477657.8 -16,212763099.6,315176168.3 -17,219126146.1,334874678.8 -18,229226683.6,354573189.3 -19,240720199,374271699.8 -20,256540771.6,393970210.3 -21,269099627.2,413668720.9 -22,281695319.5,433367231.4 -23,295267486.4,453065741.9 -24,303894472.4,472764252.4 -25,309520979.7,492462762.9 -26,316713529.3,512161273.5 -27,330857466.8,531859784 -28,345645811.2,551558294.5 -29,357291567,571256805 -30,368109975,590955315.5 -31,381184909,610653826 -32,392442202.8,630352336.6 -33,390327945.5,650050847.1 -34,401567923.5,669749357.6 -35,412556210,689447868.1 -36,423322249.6,709146378.6 -37,435737650.3,728844889.1 -38,446760135.8,748543399.7 -39,459080548,768241910.2 -40,467545485.1,787940420.7 -41,469383474.5,807638931.2 -42,468649818.9,827337441.7 -43,478189570.5,847035952.2 -44,493713929.5,866734462.8 -45,504350801.6,886432973.3 -46,512351724.9,906131483.8 -47,526101175.8,925829994.3 -48,536408020.3,945528504.8 -49,525125966.3,965227015.4 -50,530347279.6,984925525.9 -51,541829301.7,1004624036 -52,547627555.7,1024322547 -53,560572337.6,1044021057 -54,573147630.4,1063719568 -55,582960363.7,1083418078 -56,592853890.2,1103116589 -57,579116154.4,1122815099 -58,577985982.2,1142513610 -59,586626392.2,1162212121 -60,601401914.1,1181910631 -61,608134911.6,1201609142 -62,621509915.5,1221307652 -63,629115464.7,1241006163 -64,635776117.7,1260704673 -65,620347289.9,1280403184 -66,616388979.5,1300101694 -67,625006438,1319800205 -68,639943975.6,1339498715 -69,649199746.9,1359197226 -70,659837034.7,1378895736 -71,662641438.3,1398594247 -72,674675799.6,1418292757 -73,657437843.6,1437991268 -74,650275877.8,1457689778 -75,664251365.4,1477388289 -76,671246750.6,1497086799 -77,682950053.9,1516785310 -78,687288741.7,1536483820 -79,703224447.6,1556182331 -80,706079795.5,1575880841 -81,690979702.2,1595579352 -82,687334027.8,1615277862 -83,690962870.3,1634976373 -84,696631594.8,1654674883 -85,700932424.8,1674373394 -86,717274294.8,1694071904 -87,718770959.7,1713770415 -88,730588310,1733468926 -89,709229401.4,1753167436 -90,702705862,1772865947 -91,703097353.8,1792564457 -92,715861951.1,1812262968 -93,728324014.9,1831961478 -94,739718233.4,1851659989 -95,741885143.4,1871358499 -96,753529078.9,1891057010 -97,725387441.7,1910755520 -98,723800947.8,1930454031 -99,716555149.5,1950152541 -100,725661052.9,1969851052 -101,739501500.9,1989549562 -102,732965916,2009248073 -103,751634412.4,2028946583 -104,768913530.9,2048645094 -105,735838140.6,2068343604 -106,720771843.7,2088042115 -107,726831743.3,2107740625 -108,739523378.8,2127439136 -109,748848434.7,2147137646 -110,752189251.2,2166836157 -111,760511301.9,2186534667 -112,765095570.9,2206233178 \ No newline at end of file +Cores,Actual,Ideal +1,34062747.19,34062747.19 +2,55564081.48,68125494.38 +3,66464037.12,102188241.6 +4,90370192.43,136250988.8 +5,97706271.48,170313736 +6,108600808.5,204376483.1 +7,116591596.8,238439230.3 +8,147031658.3,272501977.5 +9,147795793.4,306564724.7 +10,161696269.8,340627471.9 +11,148872257.6,374690219.1 +12,186439728.6,408752966.3 +13,183470770.7,442815713.5 +14,184717388.3,476878460.7 +15,183797182.9,510941207.9 +16,227168375.5,545003955 +17,182876247.6,579066702.2 +18,221264604.9,613129449.4 +19,221882396.5,647192196.6 +20,239597726.6,681254943.8 +21,207596758.4,715317691 +22,191697794.5,749380438.2 +23,227423088.8,783443185.4 +24,253148739.6,817505932.6 +25,246012282.2,851568679.8 +26,183931645.8,885631426.9 +27,255272122.4,919694174.1 +28,232384280.9,953756921.3 +29,168946671.1,987819668.5 +30,263350366.1,1021882416 +31,202657964.5,1055945163 +32,258113176.7,1090007910 +33,215654553.5,1124070657 +34,244833995.8,1158133404 +35,240840185,1192196152 +36,255023525.2,1226258899 +37,215090744.2,1260321646 +38,222994373.4,1294384393 +39,198697901.6,1328447140 +40,255229249.3,1362509888 +41,183281464.3,1396572635 +42,232625093.5,1430635382 +43,181298104.9,1464698129 +44,216972403.4,1498760876 +45,251269884,1532823624 +46,232672604.4,1566886371 +47,225345545.1,1600949118 +48,318058103.5,1635011865 +49,264209050.9,1669074612 +50,273464573.5,1703137360 +51,286404779.7,1737200107 +52,222185342.5,1771262854 +53,215495191.8,1805325601 +54,262468406.4,1839388348 +55,278087734.6,1873451095 +56,287721496.4,1907513843 +57,315589544,1941576590 +58,159071935,1975639337 +59,152019818.7,2009702084 +60,263429551.1,2043764831 +61,155025095.9,2077827579 +62,157901428.4,2111890326 +63,242303777.1,2145953073 +64,251717866.8,2180015820 +65,152527564.3,2214078567 +66,229930245.2,2248141315 +67,172268015.3,2282204062 +68,223476343,2316266809 +69,239071525.1,2350329556 +70,208929768.5,2384392303 +71,232043581.9,2418455050 +72,248930576.6,2452517798 +73,271157085.8,2486580545 +74,278556483.3,2520643292 +75,296367249.4,2554706039 +76,246497245.2,2588768786 +77,188203709.9,2622831534 +78,224121871.9,2656894281 +79,213516175.4,2690957028 +80,292269217.4,2725019775 +81,247263418.2,2759082522 +82,218429308.7,2793145270 +83,211126215.9,2827208017 +84,261319587.6,2861270764 +85,201650974,2895333511 +86,214032327.3,2929396258 +87,199185108.2,2963459006 +88,266038409.1,2997521753 +89,211715176.4,3031584500 +90,303897349.1,3065647247 +91,214500784.5,3099709994 +92,280401183,3133772741 +93,290984006.6,3167835489 +94,285342641.4,3201898236 +95,275945175.4,3235960983 +96,415506468.8,3270023730 +97,326877077,3304086477 +98,370010031.7,3338149225 +99,342712164.2,3372211972 +100,420198965.6,3406274719 +101,336871126.3,3440337466 +102,344562244.7,3474400213 +103,308306716.9,3508462961 +104,329963688.5,3542525708 +105,407824904.1,3576588455 +106,307766781.2,3610651202 +107,317663476.4,3644713949 +108,368869747.7,3678776697 +109,346034542.2,3712839444 +110,356165560.5,3746902191 +111,335812785.9,3780964938 +112,420569616.1,3815027685 diff --git a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp old mode 100644 new mode 100755 index 4b29392a..25ea879f --- a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp +++ b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.gp @@ -7,7 +7,7 @@ set output "spp1_strong_scaling_cts2.png" set xlabel "Num Cores" set ylabel "Figure of Merit (unknowns/sec)" -set xrange [8:112] +set xrange [1:112] set key left top set logscale x 2 @@ -22,5 +22,5 @@ set key autotitle columnheader set style line 1 linetype 6 dashtype 1 linecolor rgb "#FF0000" linewidth 2 pointtype 6 pointsize 3 set style line 2 linetype 1 dashtype 2 linecolor rgb "#FF0000" linewidth 2 -plot "spp1_strong_scaling_cts2_abridged.csv" using 1:2 with linespoints linestyle 1, "" using 1:3 with line linestyle 2 +plot "spp1_strong_scaling_cts2.csv" using 1:2 with linespoints linestyle 1, "" using 1:3 with line linestyle 2 diff --git a/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.csv b/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.csv index 60a9666d..1fa082f4 100644 --- a/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.csv +++ b/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.csv @@ -1,6 +1,7 @@ Cores, Actual, Ideal -8,1.753e+08,1.753e+08 -32,4.184e+08,7.012e+08 -56,6.608e+08,1.227e+09 -88,8.835e+08,1.928e+09 -112,1.043e+09,2.542e+09 +1,34062747.19,34062747.19 +8,80213667.01,143406814.6 +32,154566343.6,573627258.2 +56,157250754.2,1003847702 +88,230101345,1577474960 +112,296690575.2,2007695404 diff --git a/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.gp b/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.gp new file mode 100755 index 00000000..e1af8acd --- /dev/null +++ b/doc/sphinx/06_umt/spp1_strong_scaling_cts2_abridged.gp @@ -0,0 +1,26 @@ +#!/usr/bin/gnuplot +set terminal pngcairo enhanced size 1024, 768 dashed font 'Helvetica,18' +set output "spp1_strong_scaling_cts2_abridged.png" + +# no title needed since we will caption the figure +#set title "Strong scaling of SPP 1 CTS-2" font "serif,22" +set xlabel "Num Cores" +set ylabel "Figure of Merit (unknowns/sec)" + +set xrange [8:112] +set key left top + +set logscale x 2 +set logscale y 2 + +set grid +show grid + +set datafile separator comma +set key autotitle columnheader + +set style line 1 linetype 6 dashtype 1 linecolor rgb "#FF0000" linewidth 2 pointtype 6 pointsize 3 +set style line 2 linetype 1 dashtype 2 linecolor rgb "#FF0000" linewidth 2 + +plot "spp1_strong_scaling_cts2_abridged.csv" using 1:2 with linespoints linestyle 1, "" using 1:3 with line linestyle 2 + diff --git a/doc/sphinx/06_umt/spp1_throughput_V100.gp b/doc/sphinx/06_umt/spp1_throughput_V100.gp old mode 100644 new mode 100755 diff --git a/doc/sphinx/06_umt/spp2_strong_scaling_cts2.csv b/doc/sphinx/06_umt/spp2_strong_scaling_cts2.csv new file mode 100644 index 00000000..98108035 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_strong_scaling_cts2.csv @@ -0,0 +1,113 @@ +Cores,Actual,Ideal +1,17925851.82,17925851.82 +2,27435363.32,35851703.64 +3,32020817.69,53777555.46 +4,47239328.13,71703407.28 +5,48844923.33,89629259.1 +6,55587536.86,107555110.9 +7,56964618.37,125480962.7 +8,80213667.01,143406814.6 +9,68722267.39,161332666.4 +10,75095488.53,179258518.2 +11,78961814.2,197184370 +12,94395276.6,215110221.8 +13,83158952.19,233036073.7 +14,86902849.7,250961925.5 +15,91279088.16,268887777.3 +16,112652799.5,286813629.1 +17,101049168.4,304739480.9 +18,119482796.8,322665332.8 +19,101967395.4,340591184.6 +20,121521455.9,358517036.4 +21,111589974.9,376442888.2 +22,110264288.4,394368740 +23,114443972.6,412294591.9 +24,138982938,430220443.7 +25,127541312.4,448146295.5 +26,102939840.3,466072147.3 +27,153518858.6,483997999.1 +28,124670950.1,501923851 +29,111899003.3,519849702.8 +30,136030065.6,537775554.6 +31,120739951.8,555701406.4 +32,154566343.6,573627258.2 +33,127325285.7,591553110.1 +34,133701008.2,609478961.9 +35,144402044,627404813.7 +36,168416486.8,645330665.5 +37,132862017.7,663256517.3 +38,135478730.7,681182369.2 +39,119125061.2,699108221 +40,162188238.1,717034072.8 +41,115727205.4,734959924.6 +42,145362698.1,752885776.4 +43,123487647,770811628.3 +44,149533687,788737480.1 +45,159280709,806663331.9 +46,149322725.2,824589183.7 +47,148926437.2,842515035.5 +48,158436928.4,860440887.4 +49,147276588.7,878366739.2 +50,181758900.1,896292591 +51,158649555.9,914218442.8 +52,138540398.3,932144294.6 +53,141701886.6,950070146.5 +54,164731418.3,967995998.3 +55,145993181.3,985921850.1 +56,157250754.2,1003847702 +57,151960268.6,1021773554 +58,135849433.5,1039699406 +59,143178834.5,1057625257 +60,195384943,1075551109 +61,151841985.6,1093476961 +62,158978837.8,1111402813 +63,181954179.6,1129328665 +64,205506112.8,1147254516 +65,149315373.8,1165180368 +66,175392178.6,1183106220 +67,157017282.8,1201032072 +68,166757797.3,1218957924 +69,143125323.2,1236883776 +70,159323055.1,1254809627 +71,150699696,1272735479 +72,177587354,1290661331 +73,170217640.1,1308587183 +74,179052497.4,1326513035 +75,184496273.2,1344438887 +76,178120120.4,1362364738 +77,145610631.7,1380290590 +78,161912985.5,1398216442 +79,169113104.5,1416142294 +80,244397666.8,1434068146 +81,210115736.9,1451993997 +82,181152680,1469919849 +83,174647078.2,1487845701 +84,227335265.9,1505771553 +85,193113989.4,1523697405 +86,198261643.8,1541623257 +87,194158113.5,1559549108 +88,230101345,1577474960 +89,200083104.7,1595400812 +90,240832294.6,1613326664 +91,182371816.2,1631252516 +92,217781585.5,1649178367 +93,223182959.5,1667104219 +94,244031131.9,1685030071 +95,210902507.1,1702955923 +96,268751049.2,1720881775 +97,204791785.1,1738807627 +98,233093759,1756733478 +99,225002252.4,1774659330 +100,291158037.8,1792585182 +101,233511411.3,1810511034 +102,243750252.2,1828436886 +103,234683224.3,1846362737 +104,234947331.7,1864288589 +105,277750848.5,1882214441 +106,229575652,1900140293 +107,228018141.4,1918066145 +108,264374446.9,1935991997 +109,219520294.3,1953917848 +110,255498853.1,1971843700 +111,231346021.6,1989769552 +112,296690575.2,2007695404 diff --git a/doc/sphinx/06_umt/spp2_strong_scaling_cts2.gp b/doc/sphinx/06_umt/spp2_strong_scaling_cts2.gp new file mode 100755 index 00000000..b427ff95 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_strong_scaling_cts2.gp @@ -0,0 +1,26 @@ +#!/usr/bin/gnuplot +set terminal pngcairo enhanced size 1024, 768 dashed font 'Helvetica,18' +set output "spp2_strong_scaling_cts2.png" + +# no title needed since we will caption the figure +#set title "Strong scaling of SPP 1 CTS-2" font "serif,22" +set xlabel "Num Cores" +set ylabel "Figure of Merit (unknowns/sec)" + +set xrange [1:112] +set key left top + +set logscale x 2 +set logscale y 2 + +set grid +show grid + +set datafile separator comma +set key autotitle columnheader + +set style line 1 linetype 6 dashtype 1 linecolor rgb "#FF0000" linewidth 2 pointtype 6 pointsize 3 +set style line 2 linetype 1 dashtype 2 linecolor rgb "#FF0000" linewidth 2 + +plot "spp2_strong_scaling_cts2.csv" using 1:2 with linespoints linestyle 1, "" using 1:3 with line linestyle 2 + diff --git a/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.csv b/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.csv new file mode 100644 index 00000000..788c7770 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.csv @@ -0,0 +1,7 @@ +Cores, Actual, Ideal +1,17925851.82,17925851.82 +8,147031658.3,272501977.5 +32,258113176.7,1090007910 +56,287721496.4,1907513843 +88,266038409.1,2997521753 +112,420569616.1,3815027685 diff --git a/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.gp b/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.gp new file mode 100755 index 00000000..59e589f9 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_strong_scaling_cts2_abridged.gp @@ -0,0 +1,26 @@ +#!/usr/bin/gnuplot +set terminal pngcairo enhanced size 1024, 768 dashed font 'Helvetica,18' +set output "spp2_strong_scaling_cts2_abridged.png" + +# no title needed since we will caption the figure +#set title "Strong scaling of SPP 2 CTS-2" font "serif,22" +set xlabel "Num Cores" +set ylabel "Figure of Merit (unknowns/sec)" + +set xrange [8:112] +set key left top + +set logscale x 2 +set logscale y 2 + +set grid +show grid + +set datafile separator comma +set key autotitle columnheader + +set style line 1 linetype 6 dashtype 1 linecolor rgb "#FF0000" linewidth 2 pointtype 6 pointsize 3 +set style line 2 linetype 1 dashtype 2 linecolor rgb "#FF0000" linewidth 2 + +plot "spp2_strong_scaling_cts2_abridged.csv" using 1:2 with linespoints linestyle 1, "" using 1:3 with line linestyle 2 + diff --git a/doc/sphinx/06_umt/umtsp2_strong_scaling_cpu.csv b/doc/sphinx/06_umt/umtsp2_strong_scaling_cpu.csv deleted file mode 100644 index fbb7c718..00000000 --- a/doc/sphinx/06_umt/umtsp2_strong_scaling_cpu.csv +++ /dev/null @@ -1,3 +0,0 @@ -Cores, Actual, Ideal - -TODO - run this. diff --git a/doc/sphinx/06_umt/umtsp2_throughput_gpu.csv b/doc/sphinx/06_umt/umtsp2_throughput_gpu.csv deleted file mode 100644 index e0131a56..00000000 --- a/doc/sphinx/06_umt/umtsp2_throughput_gpu.csv +++ /dev/null @@ -1,22 +0,0 @@ -unknowns, throughput -49152,120022.0986 -393216,1217089.688 -1327104,3999486.093 -3145728,9431417.414 -6144000,16331035.97 -10616832,26221540.93 -16859136,41053108.77 -25165824,47258709.76 -35831808,57249118.34 -49152000,53069635.92 -65421312,53391475.46 -84934656,57150762.59 -107986944,61442310.83 -134873088,52869974.38 -165888000,55939987.49 -201326592,54680094.61 -241483776,58094977.75 -286654464,56477371.49 -337133568,56763670.5 -393216000,56686957.8 -455196672,56063165.34 From d4bde95f870f4d1420193a9976a2ce29c43dad86 Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Fri, 12 Jan 2024 12:51:58 -0800 Subject: [PATCH 3/6] Add benchmarks for LLNL CTS2 for SPP1 and SPP2 --- ..._V100.csv => spp1_throughput_V100.csv.deprecated} | 0 doc/sphinx/06_umt/umt.rst | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) rename doc/sphinx/06_umt/{spp1_throughput_V100.csv => spp1_throughput_V100.csv.deprecated} (100%) diff --git a/doc/sphinx/06_umt/spp1_throughput_V100.csv b/doc/sphinx/06_umt/spp1_throughput_V100.csv.deprecated similarity index 100% rename from doc/sphinx/06_umt/spp1_throughput_V100.csv rename to doc/sphinx/06_umt/spp1_throughput_V100.csv.deprecated diff --git a/doc/sphinx/06_umt/umt.rst b/doc/sphinx/06_umt/umt.rst index 8efab0a4..411dd6c9 100644 --- a/doc/sphinx/06_umt/umt.rst +++ b/doc/sphinx/06_umt/umt.rst @@ -99,28 +99,26 @@ Results from UMT are provided on the following systems: Strong scaling data for SPP 1 on Crossroads is shown in the table and figure below -TODO - these are for the old benchmark problem and need to be updated. - -.. todo csv-table:: Strong scaling of SPP 1 on Crossroads +.. csv-table:: Strong scaling of SPP 1 on Crossroads :file: spp1_strong_scaling_cts2_abridged.csv :align: center :widths: 8, 10, 10 :header-rows: 1 -.. todo figure:: spp1_strong_scaling_cts2.png +.. figure:: spp1_strong_scaling_cts2.png :alt: Strong scaling of SPP 1 on Crossroads :align: center :scale: 50% Strong scaling of SPP 1 on Crossroads -.. todo csv-table:: SPP #2 on CTS-2 +.. csv-table:: SPP #2 on CTS-2 :file: spp2_strong_scaling_cts2_abridged.csv :align: center :widths: 8, 10, 10 :header-rows: 1 -.. todo figure:: spp2_strong_scaling_cts2.png +.. figure:: spp2_strong_scaling_cts2.png :alt: CPU Strong Scaling (Fixed problem size, SPP #2) :align: center :scale: 50% @@ -129,6 +127,8 @@ TODO - these are for the old benchmark problem and need to be updated. Throughput study of SPP 1 performance on Sierra, single GPU, as a function of problem size: +.. note:: + Performance data for SPP 1 coming soon. .. todo csv-table:: Throughput for SPP 1 on Sierra :file: spp1_throughput_V100.csv :align: center From 71e5ff49d22057da1b9f866cd663aaaaf8eeaa6c Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Thu, 25 Jan 2024 15:41:34 -0800 Subject: [PATCH 4/6] add v100 throughput runs. --- .../06_umt/spp1_strong_scaling_cts2.csv | 104 ------------------ doc/sphinx/06_umt/spp1_throughput_V100.csv | 7 ++ doc/sphinx/06_umt/spp2_throughput_V100.csv | 9 ++ doc/sphinx/06_umt/spp2_throughput_V100.gp | 28 +++++ doc/sphinx/06_umt/umt.rst | 37 +++---- 5 files changed, 60 insertions(+), 125 deletions(-) create mode 100644 doc/sphinx/06_umt/spp1_throughput_V100.csv create mode 100644 doc/sphinx/06_umt/spp2_throughput_V100.csv create mode 100755 doc/sphinx/06_umt/spp2_throughput_V100.gp diff --git a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv index a464dc1e..8af4b743 100644 --- a/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv +++ b/doc/sphinx/06_umt/spp1_strong_scaling_cts2.csv @@ -1,113 +1,9 @@ Cores,Actual,Ideal 1,34062747.19,34062747.19 -2,55564081.48,68125494.38 -3,66464037.12,102188241.6 4,90370192.43,136250988.8 -5,97706271.48,170313736 -6,108600808.5,204376483.1 -7,116591596.8,238439230.3 8,147031658.3,272501977.5 -9,147795793.4,306564724.7 -10,161696269.8,340627471.9 -11,148872257.6,374690219.1 -12,186439728.6,408752966.3 -13,183470770.7,442815713.5 -14,184717388.3,476878460.7 -15,183797182.9,510941207.9 16,227168375.5,545003955 -17,182876247.6,579066702.2 -18,221264604.9,613129449.4 -19,221882396.5,647192196.6 -20,239597726.6,681254943.8 -21,207596758.4,715317691 -22,191697794.5,749380438.2 -23,227423088.8,783443185.4 -24,253148739.6,817505932.6 -25,246012282.2,851568679.8 -26,183931645.8,885631426.9 -27,255272122.4,919694174.1 -28,232384280.9,953756921.3 -29,168946671.1,987819668.5 -30,263350366.1,1021882416 -31,202657964.5,1055945163 32,258113176.7,1090007910 -33,215654553.5,1124070657 -34,244833995.8,1158133404 -35,240840185,1192196152 -36,255023525.2,1226258899 -37,215090744.2,1260321646 -38,222994373.4,1294384393 -39,198697901.6,1328447140 -40,255229249.3,1362509888 -41,183281464.3,1396572635 -42,232625093.5,1430635382 -43,181298104.9,1464698129 -44,216972403.4,1498760876 -45,251269884,1532823624 -46,232672604.4,1566886371 -47,225345545.1,1600949118 -48,318058103.5,1635011865 -49,264209050.9,1669074612 -50,273464573.5,1703137360 -51,286404779.7,1737200107 -52,222185342.5,1771262854 -53,215495191.8,1805325601 -54,262468406.4,1839388348 -55,278087734.6,1873451095 -56,287721496.4,1907513843 -57,315589544,1941576590 -58,159071935,1975639337 -59,152019818.7,2009702084 -60,263429551.1,2043764831 -61,155025095.9,2077827579 -62,157901428.4,2111890326 -63,242303777.1,2145953073 64,251717866.8,2180015820 -65,152527564.3,2214078567 -66,229930245.2,2248141315 -67,172268015.3,2282204062 -68,223476343,2316266809 -69,239071525.1,2350329556 -70,208929768.5,2384392303 -71,232043581.9,2418455050 -72,248930576.6,2452517798 -73,271157085.8,2486580545 -74,278556483.3,2520643292 -75,296367249.4,2554706039 -76,246497245.2,2588768786 -77,188203709.9,2622831534 -78,224121871.9,2656894281 -79,213516175.4,2690957028 -80,292269217.4,2725019775 -81,247263418.2,2759082522 -82,218429308.7,2793145270 -83,211126215.9,2827208017 -84,261319587.6,2861270764 -85,201650974,2895333511 -86,214032327.3,2929396258 -87,199185108.2,2963459006 -88,266038409.1,2997521753 -89,211715176.4,3031584500 -90,303897349.1,3065647247 -91,214500784.5,3099709994 -92,280401183,3133772741 -93,290984006.6,3167835489 -94,285342641.4,3201898236 -95,275945175.4,3235960983 96,415506468.8,3270023730 -97,326877077,3304086477 -98,370010031.7,3338149225 -99,342712164.2,3372211972 -100,420198965.6,3406274719 -101,336871126.3,3440337466 -102,344562244.7,3474400213 -103,308306716.9,3508462961 -104,329963688.5,3542525708 -105,407824904.1,3576588455 -106,307766781.2,3610651202 -107,317663476.4,3644713949 -108,368869747.7,3678776697 -109,346034542.2,3712839444 -110,356165560.5,3746902191 -111,335812785.9,3780964938 112,420569616.1,3815027685 diff --git a/doc/sphinx/06_umt/spp1_throughput_V100.csv b/doc/sphinx/06_umt/spp1_throughput_V100.csv new file mode 100644 index 00000000..5bd437d8 --- /dev/null +++ b/doc/sphinx/06_umt/spp1_throughput_V100.csv @@ -0,0 +1,7 @@ +unknowns,throughput +1769472,10209722.74 +14155776,70271621.35 +47775744,174485935.3 +113246208,271737705.3 +221184000,354227397.6 +382205952,404820271.5 diff --git a/doc/sphinx/06_umt/spp2_throughput_V100.csv b/doc/sphinx/06_umt/spp2_throughput_V100.csv new file mode 100644 index 00000000..f28ca083 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_throughput_V100.csv @@ -0,0 +1,9 @@ +unknowns,throughput,,,,,,,,, +2654208,21676983.21,,,,,,,,, +6291456,45701699.5,,,,,,,,, +12288000,79225954.28,,,,,,,,, +21233664,114537827.7,,,,,,,,, +50331648,160341978,,,,,,,,, +130842624,200104616.1,,,,,,,,, +215973888,214659364.2,,,,,,,,, +331776000,219351111.1,,,,,,,,, diff --git a/doc/sphinx/06_umt/spp2_throughput_V100.gp b/doc/sphinx/06_umt/spp2_throughput_V100.gp new file mode 100755 index 00000000..6f3e8793 --- /dev/null +++ b/doc/sphinx/06_umt/spp2_throughput_V100.gp @@ -0,0 +1,28 @@ +#!/usr/bin/gnuplot +set terminal pngcairo enhanced size 1024, 768 dashed font 'Helvetica,18' +set output "spp2_throughput_V100.png" + +# no title needed since we will caption the figure +#set title "Power9/V100 single GPU throughput as a function of problem size" font "serif,22" +set xlabel "Num Unknowns" +set ylabel "Figure of Merit (unknowns/sec)" + +# allow autoscaling +#set xrange [1:128] +set key left top + +# linear axes for throughput plots +#set logscale x 2 +#set logscale y 2 + +set grid +show grid + +set datafile separator comma +set key autotitle columnheader + +set style line 1 linetype 6 dashtype 1 linecolor rgb "#FF0000" linewidth 2 pointtype 6 pointsize 3 +set style line 2 linetype 1 dashtype 2 linecolor rgb "#FF0000" linewidth 2 + +plot "spp2_throughput_V100.csv" using 1:2 with linespoints linestyle 1 + diff --git a/doc/sphinx/06_umt/umt.rst b/doc/sphinx/06_umt/umt.rst index 411dd6c9..19d79e7f 100644 --- a/doc/sphinx/06_umt/umt.rst +++ b/doc/sphinx/06_umt/umt.rst @@ -75,9 +75,13 @@ Running ======= To run the test problems, select SPP 1 or SPP 2 using the -b command line switch. Select the mesh size to generate by using -'-d x,y,z' where x,y,z is the number of tiles to produce in each cartesian axis. Use '-B global' to specify that the size -is for the global mesh, which is suitable for strong scaling studies. If performing a weak scaling study, you can -specify '-B local' to specify the size of the mesh per rank instead. +'-d x,y,z' where x,y,z is the number of tiles to produce in each cartesian axis. When generating a mesh, the dimensions should +be equiaxed, within a factor of 1.2. For example -d 5,5,5 is an ideal dimensioned mesh. A mesh dimensioned as -d 1,1,125 would +be an example of the most unideal mesh, which will negatively impact performance and not represent typical cases of interest +for UMT. + +Use '-B global' to specify that the size is for the global mesh, which is suitable for strong scaling studies. If performing a +weak scaling study, you can specify '-B local' to specify the size of the mesh per rank instead. Benchmark problems should target roughly half the node memory (for CPUs) or half the device memory (for GPUs). @@ -97,7 +101,7 @@ Results from UMT are provided on the following systems: * Crossroads (see :ref:`GlobalSystemATS3`) * Sierra (see :ref:`GlobalSystemATS2`) -Strong scaling data for SPP 1 on Crossroads is shown in the table and figure below +Strong scaling data for SPP 1 and 2 on Crossroads is shown in the tables and figures below .. csv-table:: Strong scaling of SPP 1 on Crossroads :file: spp1_strong_scaling_cts2_abridged.csv @@ -110,8 +114,6 @@ Strong scaling data for SPP 1 on Crossroads is shown in the table and figure bel :align: center :scale: 50% - Strong scaling of SPP 1 on Crossroads - .. csv-table:: SPP #2 on CTS-2 :file: spp2_strong_scaling_cts2_abridged.csv :align: center @@ -119,39 +121,32 @@ Strong scaling data for SPP 1 on Crossroads is shown in the table and figure bel :header-rows: 1 .. figure:: spp2_strong_scaling_cts2.png - :alt: CPU Strong Scaling (Fixed problem size, SPP #2) + :alt: Strong scaling of SPP 2 on Crossroads :align: center :scale: 50% Strong scaling of SPP 2 on CTS-2 -Throughput study of SPP 1 performance on Sierra, single GPU, as a function of problem size: +Throughput study of SPP 1 and 2 performance on Sierra, single GPU, as a function of problem size: -.. note:: - Performance data for SPP 1 coming soon. -.. todo csv-table:: Throughput for SPP 1 on Sierra +.. csv-table:: Throughput for SPP 1 on Sierra :file: spp1_throughput_V100.csv :align: center :widths: 10, 10 :header-rows: 1 -.. todo figure:: spp1_throughput_V100.png +.. figure:: spp1_throughput_V100.png :alt: Throughput of SPP 1 on Sierra :align: center - Throughput of SPP 1 on Sierra - -.. note:: - Performance data for SPP 2 coming soon. - -.. todo csv-table:: SPP 2 throughput on Power9 and V100 - :file: umtsp2_throughput_gpu.csv +.. csv-table:: Throughput for SPP 2 on Sierra + :file: spp2_throughput_V100.csv :align: center :widths: 10, 10, 10 :header-rows: 1 -.. todo figure:: umtsp2-throughput_gpu.png - :alt: SPP 2 GPU throughput as a function of problem size +.. figure:: spp2_throughput_V100.png + :alt: Throughput of SPP 2 on Sierra :align: center From 805bf5666007d96b611d5524ee2b574dfefb88da Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Thu, 25 Jan 2024 15:55:01 -0800 Subject: [PATCH 5/6] add code constraint. --- doc/sphinx/06_umt/umt.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/sphinx/06_umt/umt.rst b/doc/sphinx/06_umt/umt.rst index 19d79e7f..f50903fe 100644 --- a/doc/sphinx/06_umt/umt.rst +++ b/doc/sphinx/06_umt/umt.rst @@ -37,6 +37,15 @@ The Figure of Merit is defined as the number of unknowns solved per second, whic The number of corners in a mesh cell is 8 for the 3D unstructured mesh problem. (For a 2D mesh problem it would be 4.) +Source code modifications +-------------------------a + +Please see :ref:`GlobalRunRules` for general guidance on allowed modifications. +For UMT, we define the following restrictions on source code modifications: + +Solver input in the test driver is includes arrays such as 'thermo_density' and 'electron_specific_heat'. These arrays currently contain a constant +value across the array, as the benchmarks use a simplified single material problem. For example, 1.31 for thermo_density. These arrays should not +be collapsed to a scalar, as production problems of interest will have a spread of values in these arrays for multi-material problems. Building ======== From 8178c9f8e5471dcaf1b7a86220aeadd8b8410af4 Mon Sep 17 00:00:00 2001 From: Aaron Black Date: Thu, 25 Jan 2024 16:21:26 -0800 Subject: [PATCH 6/6] fix typos and graphs --- doc/sphinx/06_umt/umt.rst | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/doc/sphinx/06_umt/umt.rst b/doc/sphinx/06_umt/umt.rst index f50903fe..6a23cde8 100644 --- a/doc/sphinx/06_umt/umt.rst +++ b/doc/sphinx/06_umt/umt.rst @@ -33,17 +33,17 @@ The Figure of Merit is defined as the number of unknowns solved per second, whic .. code-block:: - number of unknowns = <# mesh cells> * <# sub-cell 'corner' elements per cell> * <# directions> * + number of unknowns = <# mesh cells * 8> * <# directions> * -The number of corners in a mesh cell is 8 for the 3D unstructured mesh problem. (For a 2D mesh problem it would be 4.) +Explanation on the '# mesh cells * 8': UMT further decomposes a mesh cell into 'corner' sub-cell spatial elements. There are 8 'corners' per cell in a 3D mesh. Source code modifications --------------------------a +------------------------- Please see :ref:`GlobalRunRules` for general guidance on allowed modifications. For UMT, we define the following restrictions on source code modifications: -Solver input in the test driver is includes arrays such as 'thermo_density' and 'electron_specific_heat'. These arrays currently contain a constant +Solver input in the test driver includes arrays such as 'thermo_density' and 'electron_specific_heat'. These arrays currently contain a constant value across the array, as the benchmarks use a simplified single material problem. For example, 1.31 for thermo_density. These arrays should not be collapsed to a scalar, as production problems of interest will have a spread of values in these arrays for multi-material problems. @@ -75,7 +75,7 @@ Build Requirements * `mvapich2 `_ * For CPU threading support, a Fortran compiler that support OpenMP 4.5, and an MPI implementation that supports MPI_THREAD_MULTIPLE. -* For GPU support, a Fortran compiler will full support for OpenMP 4.5 target offloading. +* For GPU support, a Fortran compiler with full support for OpenMP 4.5 target offloading. Instructions for building the code can be found in the UMT github repo under `BUILDING.md `_ @@ -85,8 +85,10 @@ Running To run the test problems, select SPP 1 or SPP 2 using the -b command line switch. Select the mesh size to generate by using '-d x,y,z' where x,y,z is the number of tiles to produce in each cartesian axis. When generating a mesh, the dimensions should -be equiaxed, within a factor of 1.2. For example -d 5,5,5 is an ideal dimensioned mesh. A mesh dimensioned as -d 1,1,125 would -be an example of the most unideal mesh, which will negatively impact performance and not represent typical cases of interest +be equiaxed, within a factor of 1.2. + +For example -d 5,5,5 is an ideal dimensioned mesh. A mesh dimensioned as -d 1,1,125 would +be an example of the most unideal mesh, which will negatively impact performance and not represent cases of interest for UMT. Use '-B global' to specify that the size is for the global mesh, which is suitable for strong scaling studies. If performing a @@ -115,7 +117,7 @@ Strong scaling data for SPP 1 and 2 on Crossroads is shown in the tables and fig .. csv-table:: Strong scaling of SPP 1 on Crossroads :file: spp1_strong_scaling_cts2_abridged.csv :align: center - :widths: 8, 10, 10 + :widths: auto :header-rows: 1 .. figure:: spp1_strong_scaling_cts2.png @@ -126,7 +128,7 @@ Strong scaling data for SPP 1 and 2 on Crossroads is shown in the tables and fig .. csv-table:: SPP #2 on CTS-2 :file: spp2_strong_scaling_cts2_abridged.csv :align: center - :widths: 8, 10, 10 + :widths: auto :header-rows: 1 .. figure:: spp2_strong_scaling_cts2.png @@ -141,22 +143,24 @@ Throughput study of SPP 1 and 2 performance on Sierra, single GPU, as a function .. csv-table:: Throughput for SPP 1 on Sierra :file: spp1_throughput_V100.csv :align: center - :widths: 10, 10 + :widths: auto :header-rows: 1 .. figure:: spp1_throughput_V100.png :alt: Throughput of SPP 1 on Sierra :align: center + :scale: 50% .. csv-table:: Throughput for SPP 2 on Sierra :file: spp2_throughput_V100.csv :align: center - :widths: 10, 10, 10 + :widths: auto :header-rows: 1 .. figure:: spp2_throughput_V100.png :alt: Throughput of SPP 2 on Sierra :align: center + :scale: 50% Verification of Results