Skip to content

Commit c3bc020

Browse files
authored
Merge branch 'master' into phase3-riemann
2 parents f3c96cc + 492f4c5 commit c3bc020

55 files changed

Lines changed: 547 additions & 192 deletions

File tree

Some content is hidden

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

.github/scripts/submit-slurm-job.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ case "$cluster" in
5252
account="CFD154"
5353
job_prefix="MFC"
5454
qos="hackathon"
55-
extra_sbatch=""
55+
# Let each job's slurmstepd broker its own steps instead of routing
56+
# every srun through slurmctld. The in-job test suite launches ~1700+
57+
# srun steps per allocation, which congests the Frontier controller.
58+
extra_sbatch="#SBATCH --stepmgr"
5659
test_time="01:59:00"
5760
bench_time="01:59:00"
5861
gpu_partition_dynamic=false
@@ -62,7 +65,7 @@ case "$cluster" in
6265
account="CFD154"
6366
job_prefix="MFC"
6467
qos="hackathon"
65-
extra_sbatch=""
68+
extra_sbatch="#SBATCH --stepmgr"
6669
test_time="01:59:00"
6770
bench_time="01:59:00"
6871
gpu_partition_dynamic=false

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,13 @@
5353

5454
## Why MFC?
5555

56-
- **Exascale GPU performance** - Ideal weak scaling to 43K+ GPUs. Near compute-roofline behavior. [Compile-time case optimization](https://mflowcode.github.io/documentation/running.html) for up to 10x speedup.
57-
- **Compact codebase** - ~40K lines of Fortran with [Fypp](https://fypp.readthedocs.io/en/stable/fypp.html) metaprogramming. Small enough to read and modify; powerful enough for [Gordon Bell](https://awards.acm.org/bell).
56+
- **Performant at exascale** - Ideal weak scaling to 43K+ GPUs. Near compute-roofline behavior. [Compile-time case optimization](https://mflowcode.github.io/documentation/running.html) for ~10x speedup.
57+
- **Compact code** - ~40K lines of Fortran with [Fypp](https://fypp.readthedocs.io/en/stable/fypp.html) metaprogramming. Small enough to read and modify; powerful enough for [Gordon Bell](https://awards.acm.org/bell).
5858
- **Native multi-phase** - 4, 5, and 6-equation models, phase change, surface tension, bubble dynamics, and Euler-Lagrange particle tracking, all built in.
5959
- **Portable** - NVIDIA and AMD GPUs, CPUs, laptops to exascale. Docker, Codespaces, Homebrew, and [16+ HPC system templates](https://mflowcode.github.io/documentation/running.html).
6060
- **Tested** - 500+ regression tests per PR with line-level [coverage](https://app.codecov.io/gh/MFlowCode/MFC) across GNU, Intel, Cray, and NVIDIA compilers.
61-
- **Truly open** - MIT license, active [Slack](https://join.slack.com/t/mflowcode/shared_invite/zt-y75wibvk-g~zztjknjYkK1hFgCuJxVw), and responsive development team.
61+
- **Easy to shape** - If MFC is missing something you need, do not get stuck maintaining an old private copy. Open a PR and make your feature, fix, machine support, or workflow part of the maintained codebase.
62+
- **Open** - MIT license, active [Slack](https://join.slack.com/t/mflowcode/shared_invite/zt-y75wibvk-g~zztjknjYkK1hFgCuJxVw), and a responsive development team.
6263

6364
> If MFC is useful to your work, please ⭐ star the repo and [cite it](#citation)!
6465
@@ -115,7 +116,7 @@ Run `./mfc.sh <command> --help` for detailed options, or see the [full documenta
115116
## Is this _really_ exascale?
116117

117118
MFC weak scales to the full machines on [El Capitan](https://hpc.llnl.gov/hardware/compute-platforms/el-capitan) (MI300A), [Frontier](https://www.olcf.ornl.gov/frontier/) (MI250X), and [Alps](https://www.cscs.ch/computers/alps) (GH200) with near-ideal efficiency.
118-
MFC is a SPEChpc benchmark candidate, part of the JSC JUPITER Early Access Program, and used OLCF Frontier and LLNL El Capitan early access systems.
119+
MFC is an SPEChpc benchmark candidate, part of the JSC JUPITER Early Access Program, and used OLCF Frontier and LLNL El Capitan early access systems.
119120

120121
<p align="center">
121122
<picture>
@@ -263,12 +264,12 @@ MFC is under the MIT license (see [LICENSE](LICENSE) for full text).
263264

264265
Federal sponsors have supported MFC development, including the US Department of Defense (DOD), the National Institutes of Health (NIH), the Department of Energy (DOE) and National Nuclear Security Administration (NNSA), and the National Science Foundation (NSF).
265266

266-
MFC computations have used many supercomputing systems. A partial list is below
267+
MFC computations have been run on many supercomputing systems. A partial list is below
267268
* OLCF Frontier and Summit, and testbeds Wombat, Crusher, and Spock (allocation CFD154, PI Bryngelson).
268269
* LLNL El Capitan, Tuolumne, and Lassen; El Capitan early access system Tioga.
269270
* NCSA Delta and DeltaAI, PSC Bridges(1/2), SDSC Comet and Expanse, Purdue Anvil, TACC Stampede(1-3), and TAMU ACES via ACCESS-CI allocations from Bryngelson, Colonius, Rodriguez, and more.
270271
* DOD systems Blueback, Onyx, Carpenter, Nautilus, and Narwhal via the DOD HPCMP program.
271-
* Sandia National Labs systems Doom and Attaway, and testbed systems Weaver and Vortex.
272+
* Sandia National Labs systems, Doom and Attaway, and testbed systems, Weaver and Vortex.
272273

273274
---
274275

benchmarks/ibm/case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"riemann_solver": 2,
6969
"wave_speeds": 1,
7070
"avg_state": 2,
71+
"fd_order": 2,
7172
"bc_x%beg": -3,
7273
"bc_x%end": -3,
7374
"bc_y%beg": -3,

docs/documentation/case.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ Additional details on this specification can be found in [NACA airfoil](https://
369369

370370
- For STL/OBJ geometry (geometry 5 or 12), set `model_id` to index into the `stl_models` array and specify `model_filepath`, `model_scale`, `model_translate`, and `model_threshold` on that entry.
371371

372-
- `moving_ibm` sets the method by which movement will be applied to the immersed boundary. Using 0 will result in no movement. Using 1 will result 1-way coupling where the boundary moves at a constant rate and applied forces to the fluid based upon it's own motion. In 1-way coupling, the fluid does not apply forces back onto the IB. Using 2 will result in 2-way coupling, where the boundary pushes on the fluid and the fluid pushes back on the boundary via pressure and viscous forces. If external forces are applied, the boundary will also experience those forces.
372+
- `moving_ibm` sets the method by which movement will be applied to the immersed boundary. Using 0 will result in no movement. Using 1 will result 1-way coupling where the boundary moves at a constant rate and applied forces to the fluid based upon its own motion. In 1-way coupling, the fluid does not apply forces back onto the IB. Using 2 will result in 2-way coupling, where the boundary pushes on the fluid and the fluid pushes back on the boundary via pressure and viscous forces. If external forces are applied, the boundary will also experience those forces.
373373

374374
- `vel(i)` is the initial linear velocity of the IB in the x, y, z direction for i=1, 2, 3. When `moving_ibm` equals 2, this velocity is just the starting speed of the object, which will then accelerate due to external forces. If `moving_ibm` equals 1, then this is constant if it is a number, or can be described analytically with an expression.
375375

@@ -379,15 +379,15 @@ Additional details on this specification can be found in [NACA airfoil](https://
379379
Available variables: `x` (`x_cc(i)`), `y` (`y_cc(j)`), `z` (`z_cc(k)`), `t` (current simulation time), and `r` (the IB patch radius).
380380
The same intrinsic functions and `pi` constant apply; bare `e` is not available.
381381

382-
- `coefficient_of_restitution` is a number from 0 (exclusive) to 1 (inclusive) describing how elastic IB collisions are. 0 is for perfectly inellastic collisions while 1 is for perfectly ellastic collisions.
382+
- `coefficient_of_restitution` is a number from 0 (exclusive) to 1 (inclusive) describing how elastic IB collisions are. 0 is for perfectly inelastic collisions while 1 is for perfectly elastic collisions.
383383

384-
- `collision_model` is an integer to select the collision model being used for IB collisions. Using 0 disables collisions and collisiono checking. 1 enables the soft-sphere collision model, where all IBs must be circles or sphere and those IBs can collide with each other as well as walls.
384+
- `collision_model` is an integer to select the collision model being used for IB collisions. Using 0 disables collisions and collision checking. 1 enables the soft-sphere collision model, where all IBs must be circles or sphere and those IBs can collide with each other as well as walls.
385385

386-
- `collision_time` is approximately the amount of simulation time used to resolve collisions. This is handled by modifying the spring gonstant used to apply collision forces.
386+
- `collision_time` is approximately the amount of simulation time used to resolve collisions. This is handled by modifying the spring constant used to apply collision forces.
387387

388388
- `ib_coefficient_of_friction` is the coefficient of friction used in IB collisions.
389389

390-
- `ib_neighborhood_radius` controls the size of the neighborhood size. This value defaults to 1, which indicates that any given rank is aware of IB's up to 1 ranks away. This parameter is required to strong-scale a case when IB's eventually grow to be larger than one full processor domain wide.
390+
- `ib_neighborhood_radius` controls the size of the neighborhood size. This value defaults to 1, which indicates that any given rank is aware of IBs up to 1 ranks away. This parameter is required to strong-scale a case when IBs eventually grow to be larger than one full processor domain wide.
391391

392392
#### Particle Clouds
393393

docs/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
{ name: "Burstwave lithotripsy", image: "res/simulations/k.png", computer: "Delta", computerUrl: "https://www.ncsa.illinois.edu/research/project-highlights/delta/", accelerators: "128 A100s", walltime: "30m", source: "https://www.youtube.com/watch?v=XWsUTaJXGF8" },
6464
{ name: "Cavitation fragments kidney stone", image: "res/simulations/d.png", computer: "Summit", computerUrl: "https://www.olcf.ornl.gov/summit/", accelerators: "576 V100s", walltime: "30m", source: "https://doi.org/10.48550/arXiv.2305.09163" },
6565
{ name: "Focused ultrasound on kidney stone", image: "res/simulations/v.png", computer: "Bridges2", computerUrl: "https://www.psc.edu/resources/bridges-2/", accelerators: "10 V100s", walltime: "2h", source: "https://www.youtube.com/watch?v=z8j3NH-Y6i0" },
66+
{ name: "Microbubble-enhanced HIFU in a liver", image: "res/simulations/y.png", computer: "Delta", computerUrl: "https://www.ncsa.illinois.edu/research/project-highlights/delta/", accelerators: "128 CPU cores", walltime: "26m", source: "https://www.youtube.com/watch?v=TbR0MEdG8OU" },
6667
{ name: "Kidney stone stress waves", image: "res/simulations/l.png", computer: "Bridges2", computerUrl: "https://www.psc.edu/resources/bridges-2/", accelerators: "8 V100s", walltime: "20m", source: "https://www.youtube.com/watch?v=Q2L0J68qnRw" },
6768
{ name: "Whale bubble net feeding", image: "res/simulations/p.png", computer: "Delta", computerUrl: "https://www.ncsa.illinois.edu/research/project-highlights/delta/", accelerators: "128 A100s", walltime: "30m", source: "https://www.youtube.com/watch?v=6EpP6tdCZSA" },
6869
{ name: "Earplug acoustics (kinetic energy)", image: "res/simulations/q.png", computer: "Delta", computerUrl: "https://www.ncsa.illinois.edu/research/project-highlights/delta/", accelerators: "8 A100s", walltime: "5h", source: "https://www.youtube.com/watch?v=xSW5wZkdbrc" },

docs/res/simulations/y.png

169 KB
Loading

examples/2D_backward_facing_step/case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"bc_y%end": -3,
5555
"ib": "T",
5656
"num_ibs": 1,
57+
"fd_order": 2,
5758
"viscous": "T",
5859
# Formatted Database Files Structure Parameters
5960
"format": "silo",

examples/2D_forward_facing_step/case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"bc_y%end": -2,
5353
"ib": "T",
5454
"num_ibs": 1,
55+
"fd_order": 2,
5556
# Formatted Database Files Structure Parameters
5657
"format": "silo",
5758
"precision": "double",

examples/2D_ibm/case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
# Set IB to True and add 1 patch
6161
"ib": "T",
6262
"num_ibs": 1,
63+
"fd_order": 2,
6364
"viscous": "T",
6465
# Formatted Database Files Structure Parameters
6566
"format": "silo",

examples/2D_ibm_airfoil/case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
# Set IB to True and add 1 patch
6565
"ib": "T",
6666
"num_ibs": 1,
67+
"fd_order": 2,
6768
# Formatted Database Files Structure Parameters
6869
"format": "silo",
6970
"precision": "double",

0 commit comments

Comments
 (0)