Skip to content

Commit 91d445e

Browse files
author
MFC Action
committed
Docs @ 31aed98
1 parent 735148b commit 91d445e

38 files changed

+336
-319
lines changed

documentation/doxygen_crawl.html

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
<a href="doxygen_crawl.html"/>
2323
<a href="pages.html"/>
2424
<a href="index.html"/>
25-
<a href="index.html#autotoc_md79"/>
26-
<a href="index.html#autotoc_md80"/>
25+
<a href="index.html#autotoc_md82"/>
26+
<a href="index.html#autotoc_md83"/>
2727
<a href="md_authors.html"/>
2828
<a href="md_case.html"/>
2929
<a href="md_case.html#autotoc_md10"/>
@@ -85,39 +85,42 @@
8585
<a href="md_examples.html#autotoc_md58"/>
8686
<a href="md_examples.html#autotoc_md59"/>
8787
<a href="md_examples.html#autotoc_md60"/>
88+
<a href="md_examples.html#autotoc_md61"/>
89+
<a href="md_examples.html#autotoc_md62"/>
90+
<a href="md_examples.html#autotoc_md63"/>
8891
<a href="md_expectedPerformance.html"/>
89-
<a href="md_expectedPerformance.html#autotoc_md62"/>
90-
<a href="md_expectedPerformance.html#autotoc_md63"/>
91-
<a href="md_expectedPerformance.html#autotoc_md64"/>
9292
<a href="md_expectedPerformance.html#autotoc_md65"/>
9393
<a href="md_expectedPerformance.html#autotoc_md66"/>
9494
<a href="md_expectedPerformance.html#autotoc_md67"/>
9595
<a href="md_expectedPerformance.html#autotoc_md68"/>
9696
<a href="md_expectedPerformance.html#autotoc_md69"/>
9797
<a href="md_expectedPerformance.html#autotoc_md70"/>
9898
<a href="md_expectedPerformance.html#autotoc_md71"/>
99+
<a href="md_expectedPerformance.html#autotoc_md72"/>
100+
<a href="md_expectedPerformance.html#autotoc_md73"/>
101+
<a href="md_expectedPerformance.html#autotoc_md74"/>
99102
<a href="md_getting-started.html"/>
100-
<a href="md_getting-started.html#autotoc_md73"/>
101-
<a href="md_getting-started.html#autotoc_md74"/>
102-
<a href="md_getting-started.html#autotoc_md75"/>
103103
<a href="md_getting-started.html#autotoc_md76"/>
104104
<a href="md_getting-started.html#autotoc_md77"/>
105+
<a href="md_getting-started.html#autotoc_md78"/>
106+
<a href="md_getting-started.html#autotoc_md79"/>
107+
<a href="md_getting-started.html#autotoc_md80"/>
105108
<a href="md_references.html"/>
106109
<a href="md_running.html"/>
107-
<a href="md_running.html#autotoc_md83"/>
108-
<a href="md_running.html#autotoc_md84"/>
109-
<a href="md_running.html#autotoc_md85"/>
110110
<a href="md_running.html#autotoc_md86"/>
111111
<a href="md_running.html#autotoc_md87"/>
112112
<a href="md_running.html#autotoc_md88"/>
113113
<a href="md_running.html#autotoc_md89"/>
114+
<a href="md_running.html#autotoc_md90"/>
115+
<a href="md_running.html#autotoc_md91"/>
116+
<a href="md_running.html#autotoc_md92"/>
114117
<a href="md_testing.html"/>
115-
<a href="md_testing.html#autotoc_md91"/>
116-
<a href="md_testing.html#autotoc_md92"/>
118+
<a href="md_testing.html#autotoc_md94"/>
119+
<a href="md_testing.html#autotoc_md95"/>
117120
<a href="md_visualization.html"/>
118-
<a href="md_visualization.html#autotoc_md94"/>
119-
<a href="md_visualization.html#autotoc_md95"/>
120-
<a href="md_visualization.html#autotoc_md96"/>
121+
<a href="md_visualization.html#autotoc_md100"/>
122+
<a href="md_visualization.html#autotoc_md101"/>
123+
<a href="md_visualization.html#autotoc_md102"/>
121124
<a href="md_visualization.html#autotoc_md97"/>
122125
<a href="md_visualization.html#autotoc_md98"/>
123126
<a href="md_visualization.html#autotoc_md99"/>

documentation/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@
135135
</div><!--header-->
136136
<div class="contents">
137137
<div class="textblock"><p><a class="anchor" id="md_readme"></a> </p>
138-
<h1><a class="anchor" id="autotoc_md79"></a>
138+
<h1><a class="anchor" id="autotoc_md82"></a>
139139
User Documentation</h1>
140140
<ul>
141141
<li><a class="el" href="md_getting-started.html">Getting Started</a></li>
@@ -148,7 +148,7 @@ <h1><a class="anchor" id="autotoc_md79"></a>
148148
<li><a class="el" href="md_authors.html">MFC's Authors</a></li>
149149
<li><a class="el" href="md_references.html">References</a></li>
150150
</ul>
151-
<h1><a class="anchor" id="autotoc_md80"></a>
151+
<h1><a class="anchor" id="autotoc_md83"></a>
152152
Code/API Documentation</h1>
153153
<p>MFC's three codes have their own documentation:</p>
154154
<ul>

documentation/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var index =
22
[
3-
[ "User Documentation", "index.html#autotoc_md79", null ],
4-
[ "Code/API Documentation", "index.html#autotoc_md80", null ]
3+
[ "User Documentation", "index.html#autotoc_md82", null ],
4+
[ "Code/API Documentation", "index.html#autotoc_md83", null ]
55
];

documentation/md_case.html

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,24 +152,24 @@ <h1><a class="anchor" id="autotoc_md2"></a>
152152
</div><!-- fragment --><p>This is particularly useful when computations are done in Python to generate the case.</p>
153153
<h1><a class="anchor" id="autotoc_md3"></a>
154154
(Optional) Accepting command line arguments</h1>
155-
<p>Input files can accept <b>positional</b> command line arguments, forwarded by <code>mfc.sh run</code>. Consider this example from the 3D_weak_scaling case:</p>
155+
<p>Input files can accept command line arguments, forwarded by <code>mfc.sh run</code>. Consider this example from the <code>scaling</code> case:</p>
156156
<div class="fragment"><div class="line"><span class="keyword">import</span> argparse</div>
157157
<div class="line"> </div>
158158
<div class="line">parser = argparse.ArgumentParser(</div>
159-
<div class="line"> prog=<span class="stringliteral">&quot;3D_weak_scaling&quot;</span>,</div>
160-
<div class="line"> description=<span class="stringliteral">&quot;This MFC case was created for the purposes of weak scaling.&quot;</span>,</div>
159+
<div class="line"> prog=<span class="stringliteral">&quot;scaling&quot;</span>,</div>
160+
<div class="line"> description=<span class="stringliteral">&quot;Weak- and strong-scaling benchmark case.&quot;</span>,</div>
161161
<div class="line"> formatter_class=argparse.ArgumentDefaultsHelpFormatter)</div>
162162
<div class="line"> </div>
163-
<div class="line">parser.add_argument(<span class="stringliteral">&quot;dict&quot;</span>, type=str, metavar=<span class="stringliteral">&quot;DICT&quot;</span>, help=argparse.SUPPRESS)</div>
164-
<div class="line">parser.add_argument(<span class="stringliteral">&quot;gbpp&quot;</span>, type=int, metavar=<span class="stringliteral">&quot;MEM&quot;</span>, default=16, help=<span class="stringliteral">&quot;Adjusts the problem size per rank to fit into [MEM] GB of GPU memory&quot;</span>)</div>
163+
<div class="line">parser.add_argument(<span class="stringliteral">&quot;dict&quot;</span>, type=str, metavar=<span class="stringliteral">&quot;DICT&quot;</span>)</div>
164+
<div class="line">parser.add_argument(<span class="stringliteral">&quot;-s&quot;</span>, <span class="stringliteral">&quot;--scaling&quot;</span>, type=str, metavar=<span class="stringliteral">&quot;SCALING&quot;</span>, choices=[<span class="stringliteral">&quot;weak&quot;</span>, <span class="stringliteral">&quot;strong&quot;</span>], help=<span class="stringliteral">&quot;Whether weak- or strong-scaling is being exercised.&quot;</span>)</div>
165165
<div class="line"> </div>
166166
<div class="line"><span class="comment"># Your parsed arguments are here</span></div>
167-
<div class="line">ARGS = vars(parser.parse_args())</div>
168-
</div><!-- fragment --><p>The first argument is always a JSON string representing <code>mfc.sh run</code>'s internal state. It contains all the runtime information you might want from the build/run system. We hide it from the help menu with <code>help=argparse.SUPPRESS</code> since it is not meant to be passed in by users. You can add as many additional positional arguments as you may need.</p>
167+
<div class="line">args = parser.parse_args()</div>
168+
</div><!-- fragment --><p>The first argument is always a JSON string representing <code>mfc.sh run</code>'s internal state. It contains all the runtime information you might want from the build/run system. You can add as many additional arguments as you may need.</p>
169169
<p>To run such a case, use the following format:</p>
170-
<div class="fragment"><div class="line">./mfc.sh run &lt;path/to/case.py&gt; &lt;positional arguments&gt; &lt;regular mfc.sh run arguments&gt;</div>
171-
</div><!-- fragment --><p>For example, to run the 3D_weak_scaling case with <code>gbpp=2</code>:</p>
172-
<div class="fragment"><div class="line">./mfc.sh run examples/3D_weak_scaling/case.py 2 -t pre_process -j 8</div>
170+
<div class="fragment"><div class="line">./mfc.sh run &lt;path/to/case.py&gt; &lt;mfc.sh run arguments&gt; -- &lt;case arguments&gt;</div>
171+
</div><!-- fragment --><p>For example, to run the <code>scaling</code> case in "weak-scaling" mode:</p>
172+
<div class="fragment"><div class="line">./mfc.sh run examples/scaling/case.py -t pre_process -j 8 -- --scaling weak</div>
173173
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md4"></a>
174174
Parameters</h1>
175175
<p>There are multiple sets of parameters that must be specified in the python input file:</p><ol type="1">
@@ -193,10 +193,13 @@ <h2><a class="anchor" id="autotoc_md5"></a>
193193
<tr class="markdownTableHead">
194194
<th class="markdownTableHeadRight">Parameter </th><th class="markdownTableHeadCenter">Type </th><th class="markdownTableHeadLeft">Description </th></tr>
195195
<tr class="markdownTableRowOdd">
196-
<td class="markdownTableBodyRight"><code>run_time_info</code> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Output run-time information </td></tr>
196+
<td class="markdownTableBodyRight"><code>run_time_info</code> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">Output run-time information </td></tr>
197+
<tr class="markdownTableRowEven">
198+
<td class="markdownTableBodyRight"><code>rdma_mpi</code> </td><td class="markdownTableBodyCenter">Logical </td><td class="markdownTableBodyLeft">(GPUs) Enable RDMA for MPI communication. </td></tr>
197199
</table>
198200
<ul>
199201
<li><code>run_time_info</code> generates a text file that includes run-time information including the CFL number(s) at each time-step.</li>
202+
<li><code>rdma_mpi</code> optimizes data transfers between GPUs using Remote Direct Memory Access (RDMA). The underlying MPI implementation and communication infrastructure must support this feature, detecting GPU pointers and performing RDMA accordingly.</li>
200203
</ul>
201204
<h2><a class="anchor" id="autotoc_md6"></a>
202205
2. Computational Domain</h2>

documentation/md_examples.html

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -166,119 +166,123 @@ <h2><a class="anchor" id="autotoc_md35"></a>
166166
<div class="caption">
167167
Density Norms</div></div>
168168
<h1><a class="anchor" id="autotoc_md36"></a>
169+
Strong- &amp; Weak-scaling</h1>
170+
<p>The <a href="case.py"><b>Scaling</b></a> case can exercise both weak- and strong-scaling. It adjusts itself depending on the number of requested ranks.</p>
171+
<p>This directory also contains a collection of scripts used to test strong-scaling on OLCF Frontier. They required modifying MFC to collect some metrics but are meant to serve as a reference to users wishing to run similar experiments.</p>
172+
<h2><a class="anchor" id="autotoc_md37"></a>
173+
Weak Scaling</h2>
174+
<p>Pass <code>--scaling weak</code>. The <code>--memory</code> option controls (approximately) how much memory each rank should use, in Gigabytes. The number of cells in each dimension is then adjusted according to the number of requested ranks and an approximation for the relation between cell count and memory usage. The problem size increases linearly with the number of ranks.</p>
175+
<h2><a class="anchor" id="autotoc_md38"></a>
176+
Strong Scaling</h2>
177+
<p>Pass <code>--scaling strong</code>. The <code>--memory</code> option controls (approximately) how much memory should be used in total during simulation, across all ranks, in Gigabytes. The problem size remains constant as the number of ranks increases.</p>
178+
<h2><a class="anchor" id="autotoc_md39"></a>
179+
Example</h2>
180+
<p>For example, to run a weak-scaling test that uses ~4GB of GPU memory per rank on 8 2-rank nodes with case optimization, one could:</p>
181+
<div class="fragment"><div class="line">./mfc.sh run examples/scaling/case.py -t pre_process simulation \</div>
182+
<div class="line"> -e batch -p mypartition -N 8 -n 2 -w &quot;01:00:00&quot; -# &quot;MFC Weak Scaling&quot; \</div>
183+
<div class="line"> --case-optimization -j 32 -- --scaling weak --memory 4</div>
184+
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md40"></a>
169185
Shock Droplet (2D)</h1>
170186
<p>Reference: Panchal et. al., A Seven-Equation Diffused Interface Method for Resolved Multiphase Flows, JCP, 475 (2023)</p>
171-
<h2><a class="anchor" id="autotoc_md37"></a>
187+
<h2><a class="anchor" id="autotoc_md41"></a>
172188
Initial Condition</h2>
173189
<div class="image">
174190
<img src="initial-2D_shockdroplet-example.png" alt=""/>
175191
<div class="caption">
176192
Initial Condition</div></div>
177-
<h2><a class="anchor" id="autotoc_md38"></a>
193+
<h2><a class="anchor" id="autotoc_md42"></a>
178194
Result</h2>
179195
<p><img src="result-2D_shockdroplet-example.png" alt="" class="inline" title="Result"/> </p>
180-
<h1><a class="anchor" id="autotoc_md39"></a>
196+
<h1><a class="anchor" id="autotoc_md43"></a>
181197
Isentropic vortex problem (2D)</h1>
182198
<p>Reference: Coralic, V., &amp; Colonius, T. (2014). Finite-volume Weno scheme for viscous compressible multicomponent flows. Journal of Computational Physics, 274, 95–121. <a href="https://doi.org/10.1016/j.jcp.2014.06.003">https://doi.org/10.1016/j.jcp.2014.06.003</a></p>
183-
<h2><a class="anchor" id="autotoc_md40"></a>
199+
<h2><a class="anchor" id="autotoc_md44"></a>
184200
Density</h2>
185201
<div class="image">
186202
<img src="alpha_rho1-2D_isentropicvortex-example.png" alt=""/>
187203
<div class="caption">
188204
Density</div></div>
189-
<h2><a class="anchor" id="autotoc_md41"></a>
205+
<h2><a class="anchor" id="autotoc_md45"></a>
190206
Density Norms</h2>
191207
<div class="image">
192208
<img src="density_norms-2D_isentropicvortex-example.png" alt=""/>
193209
<div class="caption">
194210
Density Norms</div></div>
195-
<h1><a class="anchor" id="autotoc_md42"></a>
211+
<h1><a class="anchor" id="autotoc_md46"></a>
196212
Lax shock tube problem (1D)</h1>
197213
<p>Reference: P. D. Lax, Weak solutions of nonlinear hyperbolic equations and their numerical computation, Communications on pure and applied mathematics 7 (1) (1954) 159–193.</p>
198-
<h2><a class="anchor" id="autotoc_md43"></a>
214+
<h2><a class="anchor" id="autotoc_md47"></a>
199215
Initial Condition</h2>
200216
<div class="image">
201217
<img src="initial-1D_laxshocktube-example.png" alt=""/>
202218
<div class="caption">
203219
Initial Condition</div></div>
204-
<h2><a class="anchor" id="autotoc_md44"></a>
220+
<h2><a class="anchor" id="autotoc_md48"></a>
205221
Result</h2>
206222
<div class="image">
207223
<img src="result-1D_laxshocktube-example.png" alt=""/>
208224
<div class="caption">
209225
Result</div></div>
210-
<h1><a class="anchor" id="autotoc_md45"></a>
211-
3D Weak Scaling</h1>
212-
<p>The <a href="case.py"><b>3D_weak_scaling</b></a> case depends on two parameters:</p>
213-
<ul>
214-
<li><b>The number of MPI ranks</b> (<em>procs</em>): As <em>procs</em> increases, the problem size per rank remains constant. <em>procs</em> is determined using information provided to the case file by <code>mfc.sh run</code>.</li>
215-
<li><b>GPU memory usage per rank</b> (<em>gbpp</em>): As <em>gbpp</em> increases, the problem size per rank increases and the number of timesteps decreases so that wall times consistent. <em>gbpp</em> is a user-defined optional argument to the <a href="case.py">case.py</a> file. It can be specified right after the case filepath when invoking <code>mfc.sh run</code>.</li>
216-
</ul>
217-
<p>Weak scaling benchmarks can be produced by keeping <em>gbpp</em> constant and varying <em>procs</em>.</p>
218-
<p>For example, to run a weak scaling test that uses ~4GB of GPU memory per rank on 8 2-rank nodes with case optimization, one could:</p>
219-
<div class="fragment"><div class="line">./mfc.sh run examples/3D_weak_scaling/case.py 4 -t pre_process simulation \</div>
220-
<div class="line"> -e batch -p mypartition -N 8 -n 2 -w &quot;01:00:00&quot; -# &quot;MFC Weak Scaling&quot; \</div>
221-
<div class="line"> --case-optimization -j 32</div>
222-
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md46"></a>
226+
<h1><a class="anchor" id="autotoc_md49"></a>
223227
2D Hardcodied IC Example</h1>
224-
<h2><a class="anchor" id="autotoc_md47"></a>
228+
<h2><a class="anchor" id="autotoc_md50"></a>
225229
Initial Condition</h2>
226230
<div class="image">
227231
<img src="initial-2D_hardcodied_ic-example.png" alt=""/>
228232
<div class="caption">
229233
Initial Condition</div></div>
230-
<h2><a class="anchor" id="autotoc_md48"></a>
234+
<h2><a class="anchor" id="autotoc_md51"></a>
231235
Result</h2>
232236
<p><img src="result-2D_hardcodied_ic-example.png" alt="" class="inline" title="Result"/> </p>
233-
<h1><a class="anchor" id="autotoc_md49"></a>
237+
<h1><a class="anchor" id="autotoc_md52"></a>
234238
Titarev-Toro problem (1D)</h1>
235239
<p>Reference: V. A. Titarev, E. F. Toro, Finite-volume WENO schemes for three-dimensional conservation laws, Journal of Computational Physics 201 (1) (2004) 238–260.</p>
236-
<h2><a class="anchor" id="autotoc_md50"></a>
240+
<h2><a class="anchor" id="autotoc_md53"></a>
237241
Initial Condition</h2>
238242
<div class="image">
239243
<img src="initial-1D_titarevtorro-example.png" alt=""/>
240244
<div class="caption">
241245
Initial Condition</div></div>
242-
<h2><a class="anchor" id="autotoc_md51"></a>
246+
<h2><a class="anchor" id="autotoc_md54"></a>
243247
Result</h2>
244248
<div class="image">
245249
<img src="result-1D_titarevtorro-example.png" alt=""/>
246250
<div class="caption">
247251
Result</div></div>
248-
<h1><a class="anchor" id="autotoc_md52"></a>
252+
<h1><a class="anchor" id="autotoc_md55"></a>
249253
Rayleigh-Taylor Instability (3D)</h1>
250-
<h2><a class="anchor" id="autotoc_md53"></a>
254+
<h2><a class="anchor" id="autotoc_md56"></a>
251255
Final Condition</h2>
252256
<div class="image">
253257
<img src="final_condition-3D_rayleigh_taylor-example.png" alt=""/>
254258
<div class="caption">
255259
Final Condition</div></div>
256-
<h2><a class="anchor" id="autotoc_md54"></a>
260+
<h2><a class="anchor" id="autotoc_md57"></a>
257261
Centerline Velocities</h2>
258262
<p><img src="linear_theory.jpg" alt="Linear Theory Comparision" class="inline"/></p>
259-
<h1><a class="anchor" id="autotoc_md55"></a>
263+
<h1><a class="anchor" id="autotoc_md58"></a>
260264
Rayleigh-Taylor Instability (2D)</h1>
261-
<h2><a class="anchor" id="autotoc_md56"></a>
265+
<h2><a class="anchor" id="autotoc_md59"></a>
262266
Final Condition</h2>
263267
<div class="image">
264268
<img src="final_condition-2D_rayleigh_taylor-example.png" alt=""/>
265269
<div class="caption">
266270
Final Condition</div></div>
267-
<h2><a class="anchor" id="autotoc_md57"></a>
271+
<h2><a class="anchor" id="autotoc_md60"></a>
268272
Centerline Velocities</h2>
269273
<p><img src="linear_theory.jpg" alt="Linear Theory Comparision" class="inline"/></p>
270-
<h1><a class="anchor" id="autotoc_md58"></a>
274+
<h1><a class="anchor" id="autotoc_md61"></a>
271275
Lid-Driven Cavity Problem (2D)</h1>
272276
<p>Reference: Bezgin, D. A., &amp; Buhendwa A. B., &amp; Adams N. A. (2022). JAX-FLUIDS: A fully-differentiable high-order computational fluid dynamics solver for compressible two-phase flows. arXiv:2203.13760</p>
273277
<p>Reference: Ghia, U., &amp; Ghia, K. N., &amp; Shin, C. T. (1982). High-re solutions for incompressible flow using the Navier-Stokes equations and a multigrid method. Journal of Computational Physics, 48, 387-411</p>
274278
<p>Video: <a href="https://youtube.com/shorts/JEP28scZrBM?feature=share">https://youtube.com/shorts/JEP28scZrBM?feature=share</a></p>
275-
<h2><a class="anchor" id="autotoc_md59"></a>
279+
<h2><a class="anchor" id="autotoc_md62"></a>
276280
Final Condition</h2>
277281
<div class="image">
278282
<img src="final_condition-2D_lid_driven_cavity-example.png" alt=""/>
279283
<div class="caption">
280284
Final Condition</div></div>
281-
<h2><a class="anchor" id="autotoc_md60"></a>
285+
<h2><a class="anchor" id="autotoc_md63"></a>
282286
Centerline Velocities</h2>
283287
<div class="image">
284288
<img src="centerline_velocities-2D_lid_driven_cavity-example.png" alt=""/>

0 commit comments

Comments
 (0)