Skip to content

Commit 47706d0

Browse files
author
MFC Action
committed
Docs @ 3a36844
1 parent c9257fd commit 47706d0

File tree

3,053 files changed

+1408
-272947
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,053 files changed

+1408
-272947
lines changed

documentation/md_running.html

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,18 @@
127127
</div><!--header-->
128128
<div class="contents">
129129
<div class="textblock"><p><a class="anchor" id="autotoc_md80"></a> MFC can be run using <code>mfc.sh</code>'s <code>run</code> command. It supports both interactive and batch execution, the latter being designed for multi-socket systems, namely supercomputers, equipped with a scheduler such as PBS, SLURM, and LSF. A full (and updated) list of available arguments can be acquired with <code>./mfc.sh run -h</code>.</p>
130+
<p>MFC supports running simulations locally (Linux, MacOS, and Windows) as well as several supercomputer clusters, both interactively and through batch submission.</p>
131+
<blockquote class="doxtable">
132+
<p>&zwj;[!IMPORTANT] Running simulations locally should work out of the box. On supported clusters, you can append <code>-c &lt;computer name&gt;</code> on the command line to instruct the MFC toolchain to make use of the template file <code>toolchain/templates/&lt;computer name&gt;.mako</code>. You can browse that directory and contribute your own files. Since systems and their schedulers do not have a standardized syntax to request certain resources, MFC can only provide support for a restricted subset of common or user-contributed configuration options.</p>
133+
<p>Adding a new template file or modifying an existing one will most likely be required if:</p><ul>
134+
<li>You are on a cluster that does not have a template yet.</li>
135+
<li>Your cluster is configured with SLURM but interactive job launches fail when using <code>srun</code>. You might need to invoke <code>mpirun</code> instead.</li>
136+
<li>Something in the existing default or computer template file is incompatible with your system or does not provide a feature you need.</li>
137+
</ul>
138+
<p>If <code>-c &lt;computer name&gt;</code> is left unspecified, it defaults to <code>-c default</code>. </p>
139+
</blockquote>
140+
<p>Additional flags can be appended to the MPI executable call using the <code>-f</code> (i.e <code>--flags</code>) option.</p>
141+
<p>Please refer to <code>./mfc.sh run -h</code> for a complete list of arguments and options, along with their defaults.</p>
130142
<h1><a class="anchor" id="autotoc_md81"></a>
131143
Interactive Execution</h1>
132144
<p>To run all stages of MFC, that is <a href="https://github.com/MFlowCode/MFC/tree/master/src/pre_process/">pre_process</a>, <a href="https://github.com/MFlowCode/MFC/tree/master/src/simulation/">simulation</a>, and <a href="https://github.com/MFlowCode/MFC/tree/master/src/post_process/">post_process</a> on the sample case <a href="https://github.com/MFlowCode/MFC/tree/master/examples/2D_shockbubble/">2D_shockbubble</a>,</p>
@@ -141,13 +153,11 @@ <h1><a class="anchor" id="autotoc_md81"></a>
141153
<li>Running <a href="https://github.com/MFlowCode/MFC/tree/master/src/simulation/">simulation</a> and <a href="https://github.com/MFlowCode/MFC/tree/master/src/post_process/">post_process</a> using 4 cores:</li>
142154
</ul>
143155
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -t simulation post_process -n 4</div>
144-
</div><!-- fragment --><p>On some computer clusters, MFC might select the wrong MPI program to execute your application because it uses a general heuristic for its selection. Notably, <code>srun</code> is known to fail on some SLURM systems when using GPUs or MPI implementations from different vendors, whereas <code>mpirun</code> functions properly. To override and manually specify which MPI program you wish to run your application with, please use the <code>-b &lt;program name&gt;</code> option (i.e <code>--binary</code>).</p>
145-
<p>Additional flags can be appended to the MPI executable call using the <code>-f</code> (i.e <code>--flags</code>) option.</p>
146-
<p>Please refer to <code>./mfc.sh run -h</code> for a complete list of arguments and options, along with their defaults.</p>
147-
<h1><a class="anchor" id="autotoc_md82"></a>
156+
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md82"></a>
148157
Batch Execution</h1>
149-
<p>The MFC detects which scheduler your system is using and handles the creation and execution of batch scripts. The batch engine is requested with the <code>-e batch</code> option. Whereas the interactive engine can execute all of MFC's codes in succession, the batch engine requires you to only specify one target with the <code>-t</code> option. The number of nodes and GPUs can, respectively be specified with the <code>-N</code> (i.e <code>--nodes</code>) and <code>-g</code> (i.e <code>--gpus-per-node</code>) options.</p>
150-
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch -N 2 -n 4 -g 4 -t simulation</div>
158+
<p>The MFC detects which scheduler your system is using and handles the creation and execution of batch scripts. The batch engine is requested via the <code>-e batch</code> option. The number of nodes can be specified with the <code>-N</code> (i.e <code>--nodes</code>) option.</p>
159+
<p>We provide a list of (baked-in) submission batch scripts in the <code>toolchain/templates</code> folder.</p>
160+
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch -N 2 -n 4 -t simulation -c &lt;computer name&gt;</div>
151161
</div><!-- fragment --><p>Other useful arguments include:</p>
152162
<ul>
153163
<li><code>-# &lt;job name&gt;</code> to name your job. (i.e <code>--name</code>)</li>
@@ -156,16 +166,7 @@ <h1><a class="anchor" id="autotoc_md82"></a>
156166
<li><code>-a &lt;account name&gt;</code> to identify the account to be charged for the job. (i.e <code>--account</code>)</li>
157167
<li><code>-p &lt;partition name&gt;</code> to select the job's partition. (i.e <code>--partition</code>)</li>
158168
</ul>
159-
<p>Since some schedulers don't have a standardized syntax to request certain resources, MFC can only provide support for a restricted subset of common configuration options. If MFC fails to execute on your system, or if you wish to adjust how the program runs and resources are requested to be allocated, you are invited to modify the template batch script for your queue system. Upon execution of <code>./mfc.sh run</code>, MFC fills in the template with runtime parameters, to generate the batch file it will submit. These files are located in the <a href="https://github.com/MFlowCode/MFC/tree/master/toolchain/templates/">templates</a> directory. To request GPUs, modification of the template will be required on most systems.</p>
160-
<ul>
161-
<li>Lines that begin with <code>#&gt;</code> are ignored and won't figure in the final batch script, not even as a comment.</li>
162-
<li>Statements of the form <code>${expression}</code> are string-replaced to provide runtime parameters, most notably execution options. You can perform therein any Python operation recognized by the built-in <code>expr()</code> function.</li>
163-
</ul>
164169
<p>As an example, one might request GPUs on a SLURM system using the following:</p>
165-
<div class="fragment"><div class="line">#SBATCH --gpus=v100-32:{gpus_per_node*nodes}</div>
166-
</div><!-- fragment --><ul>
167-
<li>Statements of the form <code>{MFC::expression}</code> tell MFC where to place the common code, across all batch files, that is required for proper execution. They are not intended to be modified by users.</li>
168-
</ul>
169170
<p><b>Disclaimer</b>: IBM's JSRUN on LSF-managed computers does not use the traditional node-based approach to allocate resources. Therefore, the MFC constructs equivalent resource-sets in task and GPU count.</p>
170171
<h2><a class="anchor" id="autotoc_md83"></a>
171172
Profiling with NVIDIA Nsight</h2>
@@ -266,13 +267,8 @@ <h2><a class="anchor" id="autotoc_md84"></a>
266267
<ul>
267268
<li>Oak Ridge National Laboratory's <a href="https://www.olcf.ornl.gov/summit/">Summit</a>:</li>
268269
</ul>
269-
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch \</div>
270-
<div class="line"> -N 2 -n 4 -g 4 -t simulation -a &lt;redacted&gt;</div>
271-
</div><!-- fragment --><ul>
272-
<li>University of California, San Diego's <a href="https://www.sdsc.edu/services/hpc/expanse/">Expanse</a>:</li>
273-
</ul>
274-
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch -p GPU -t simulation \</div>
275-
<div class="line"> -N 2 -n 8 -g 8 -f=&quot;--gpus=v100-32:16&quot; -b mpirun –w 00:30:00</div>
270+
<div class="fragment"><div class="line">$ ./mfc.sh run examples/2D_shockbubble/case.py -e batch \</div>
271+
<div class="line"> -N 2 -n 4 -t simulation -a &lt;redacted&gt; -c summit</div>
276272
</div><!-- fragment --> </div></div><!-- contents -->
277273
</div><!-- PageDoc -->
278274
</div><!-- doc-content -->

post_process/annotated.html

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,24 +130,6 @@
130130
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span>]</div><table class="directory">
131131
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">M</span></span><a class="el" href="namespacem__data__input.html" target="_self">m_data_input</a></td><td class="desc">This module features procedures, which for a specific time-step, read in the raw simulation data for the grid and the conservative variables and fill out their buffer regions </td></tr>
132132
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="interfacem__data__input_1_1s__read__abstract__data__files.html" target="_self">s_read_abstract_data_files</a></td><td class="desc">Subroutine for reading data files </td></tr>
133-
<tr id="row_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structbounds__info.html" target="_self">bounds_info</a></td><td class="desc">Derived type adding beginning (beg) and end bounds info as attributes </td></tr>
134-
<tr id="row_2_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structbub__bounds__info.html" target="_self">bub_bounds_info</a></td><td class="desc">Bounds for the bubble dynamic variables </td></tr>
135-
<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structfield__position.html" target="_self">field_position</a></td><td class="desc">Derived type adding the field position (fp) as an attribute </td></tr>
136-
<tr id="row_4_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structic__model__parameters.html" target="_self">ic_model_parameters</a></td><td class="desc">Defines parameters for a Model Patch </td></tr>
137-
<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structic__patch__parameters.html" target="_self">ic_patch_parameters</a></td><td class="desc">Derived type adding initial condition (ic) patch parameters as attributes NOTE: The requirements for the specification of the above parameters are strongly dependent on both the choice of the multicomponent flow model as well as the choice of the patch geometry </td></tr>
138-
<tr id="row_6_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structint__bounds__info.html" target="_self">int_bounds_info</a></td><td class="desc">Integer bounds for variables </td></tr>
139-
<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structintegral__parameters.html" target="_self">integral_parameters</a></td><td class="desc">Derived type annexing integral regions </td></tr>
140-
<tr id="row_8_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmono__parameters.html" target="_self">mono_parameters</a></td><td class="desc">Monopole acoustic source parameters </td></tr>
141-
<tr id="row_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmpi__io__var.html" target="_self">mpi_io_var</a></td><td class="desc"></td></tr>
142-
<tr id="row_10_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structphysical__parameters.html" target="_self">physical_parameters</a></td><td class="desc">Derived type annexing the physical parameters (PP) of the fluids. These include the specific heat ratio function and liquid stiffness function </td></tr>
143-
<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structpres__field.html" target="_self">pres_field</a></td><td class="desc">Derived type for bubble variables pb and mv at quadrature nodes (qbmm) </td></tr>
144-
<tr id="row_12_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structprobe__parameters.html" target="_self">probe_parameters</a></td><td class="desc">Derived type annexing the flow probe location </td></tr>
145-
<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structscalar__field.html" target="_self">scalar_field</a></td><td class="desc">Derived type annexing a scalar field (SF) </td></tr>
146-
<tr id="row_14_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structt__bbox.html" target="_self">t_bbox</a></td><td class="desc"></td></tr>
147-
<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structt__model.html" target="_self">t_model</a></td><td class="desc"></td></tr>
148-
<tr id="row_16_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structt__ray.html" target="_self">t_ray</a></td><td class="desc"></td></tr>
149-
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structt__triangle.html" target="_self">t_triangle</a></td><td class="desc"></td></tr>
150-
<tr id="row_18_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structvector__field.html" target="_self">vector_field</a></td><td class="desc">Derived type annexing a vector field (VF) </td></tr>
151133
</table>
152134
</div><!-- directory -->
153135
</div><!-- contents -->

post_process/annotated_dup.js

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,5 @@ var annotated_dup =
22
[
33
[ "m_data_input", "namespacem__data__input.html", [
44
[ "s_read_abstract_data_files", "interfacem__data__input_1_1s__read__abstract__data__files.html", "interfacem__data__input_1_1s__read__abstract__data__files" ]
5-
] ],
6-
[ "bounds_info", "structbounds__info.html", "structbounds__info" ],
7-
[ "bub_bounds_info", "structbub__bounds__info.html", "structbub__bounds__info" ],
8-
[ "field_position", "structfield__position.html", "structfield__position" ],
9-
[ "ic_model_parameters", "structic__model__parameters.html", "structic__model__parameters" ],
10-
[ "ic_patch_parameters", "structic__patch__parameters.html", "structic__patch__parameters" ],
11-
[ "int_bounds_info", "structint__bounds__info.html", "structint__bounds__info" ],
12-
[ "integral_parameters", "structintegral__parameters.html", "structintegral__parameters" ],
13-
[ "mono_parameters", "structmono__parameters.html", "structmono__parameters" ],
14-
[ "mpi_io_var", "structmpi__io__var.html", "structmpi__io__var" ],
15-
[ "physical_parameters", "structphysical__parameters.html", "structphysical__parameters" ],
16-
[ "pres_field", "structpres__field.html", "structpres__field" ],
17-
[ "probe_parameters", "structprobe__parameters.html", "structprobe__parameters" ],
18-
[ "scalar_field", "structscalar__field.html", "structscalar__field" ],
19-
[ "t_bbox", "structt__bbox.html", null ],
20-
[ "t_model", "structt__model.html", "structt__model" ],
21-
[ "t_ray", "structt__ray.html", null ],
22-
[ "t_triangle", "structt__triangle.html", "structt__triangle" ],
23-
[ "vector_field", "structvector__field.html", "structvector__field" ]
5+
] ]
246
];

0 commit comments

Comments
 (0)