Skip to content

Commit 3c4b6dd

Browse files
Merge branch 'master' into gpu-optimizations
2 parents bfcc593 + 9b1e64f commit 3c4b6dd

13 files changed

Lines changed: 248 additions & 223 deletions

File tree

.github/workflows/homebrew-release.yml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,14 @@ jobs:
109109
110110
echo "Updating formula to v${VERSION}..."
111111
112-
# Update URL
113-
sed -i "s|url \"https://github.com/MFlowCode/MFC/archive/refs/tags/v[^\"]*\.tar\.gz\"|url \"https://github.com/MFlowCode/MFC/archive/refs/tags/v${VERSION}.tar.gz\"|" "$FORMULA"
112+
# Update URL (match any GitHub archive URL, not just MFlowCode/MFC,
113+
# in case the formula temporarily points at a fork during testing)
114+
sed -i "s|url \"https://github.com/[^\"]*/archive/[^\"]*\.tar\.gz\"|url \"https://github.com/MFlowCode/MFC/archive/refs/tags/v${VERSION}.tar.gz\"|" "$FORMULA"
114115
115116
# Update SHA256 (the one right after url, not bottle SHAs)
116117
# This uses awk to only update the first sha256 after the url line
117118
awk -v newsha="$SHA256" '
118-
/^ url "https:\/\/github.com\/MFlowCode\/MFC/ { found_url=1 }
119+
/^ url "https:\/\/github.com\// { found_url=1 }
119120
found_url && /^ sha256 "/ && !updated {
120121
sub(/sha256 "[^"]*"/, "sha256 \"" newsha "\"")
121122
updated=1
@@ -157,13 +158,16 @@ jobs:
157158
git config user.email "github-actions[bot]@users.noreply.github.com"
158159
159160
git add Formula/mfc.rb
160-
git commit -m "Update MFC to v${VERSION}"
161161
162-
echo "Pushing to homebrew-mfc..."
163-
git push origin main
164-
165-
echo "Successfully pushed formula update!"
166-
echo "The bottle.yml workflow in homebrew-mfc will now build bottles automatically."
162+
if git diff --cached --quiet; then
163+
echo "::notice::Formula already up to date for v${VERSION} — nothing to push."
164+
else
165+
git commit -m "Update MFC to v${VERSION}"
166+
echo "Pushing to homebrew-mfc..."
167+
git push origin main
168+
echo "Successfully pushed formula update!"
169+
echo "The bottle.yml workflow in homebrew-mfc will now build bottles automatically."
170+
fi
167171
168172
- name: Dry run summary
169173
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.dry_run == 'true' }}

README.md

Lines changed: 85 additions & 173 deletions
Large diffs are not rendered by default.

docs/Doxyfile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ PROJECT_NUMBER =
4747
# for a project that appears at the top of each page and should give viewer a
4848
# quick idea about the purpose of the project. Keep the description short.
4949

50-
PROJECT_BRIEF = "High-fidelity multiphase flow simulation"
50+
PROJECT_BRIEF = "Exascale flow solver"
5151

5252
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
5353
# in the documentation. The maximum height of the logo should not exceed 55

docs/custom.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
* Overrides for doxygen-awesome theme
44
*/
55

6+
/* Narrower left navigation panel */
7+
html {
8+
--side-nav-fixed-width: 210px;
9+
}
10+
11+
/* Hide tree sync button */
12+
#nav-sync {
13+
display: none;
14+
}
15+
616
/* Seamless split <code> tags for Fortran % struct accessors.
717
* Doxygen consumes %<word> even inside code spans, so we split around %
818
* into adjacent <code> elements and remove internal borders/padding. */

docs/documentation/expectedPerformance.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,22 +165,24 @@ __All grind times are in nanoseconds (ns) per grid point (gp) per equation (eq)
165165

166166
Weak scaling results are obtained by increasing the problem size with the number of processes so that work per process remains constant.
167167

168-
### AMD MI250X GPU
168+
### GPU weak scaling
169169

170-
MFC weask scales to (at least) 65,536 AMD MI250X GPUs on OLCF Frontier with 96% efficiency.
171-
This corresponds to 87% of the entire machine.
170+
MFC weak scales on multiple exascale GPU platforms with high efficiency:
171+
- **LLNL El Capitan**: AMD MI300A APUs
172+
- **OLCF Frontier**: AMD MI250X GPUs (65,536 GCDs, 87% of the machine, 96% efficiency)
173+
- **CSCS Alps**: NVIDIA GH200 GPUs
172174

173-
<img src="../res/weakScaling/frontier.svg" style="height: 50%; width:50%; border-radius: 10pt"/>
175+
<img src="../res/weakScaling/weakscaling-dark.png" style="width:60%; border-radius: 10pt"/>
174176

175-
### NVIDIA V100 GPU
177+
### NVIDIA V100 GPU (historical)
176178

177-
MFC weak scales to (at least) 13,824 V100 NVIDIA V100 GPUs on OLCF Summit with 97% efficiency.
179+
MFC weak scales to (at least) 13,824 NVIDIA V100 GPUs on OLCF Summit with 97% efficiency.
178180
This corresponds to 50% of the entire machine.
179181

180182
<img src="../res/weakScaling/summit.svg" style="height: 50%; width:50%; border-radius: 10pt"/>
181183

182-
### IBM Power9 CPU
183-
MFC Weak scales to 13,824 Power9 CPU cores on OLCF Summit to within 1% of ideal scaling.
184+
### IBM Power9 CPU (historical)
185+
MFC weak scales to 13,824 Power9 CPU cores on OLCF Summit to within 1% of ideal scaling.
184186

185187
<img src="../res/weakScaling/cpuScaling.svg" style="height: 50%; width:50%; border-radius: 10pt"/>
186188

docs/footer.html

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,8 @@
11
<!-- HTML footer for doxygen 1.9.1-->
22
<!-- start footer part -->
33
<!--BEGIN GENERATE_TREEVIEW-->
4-
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
5-
<ul>
6-
$navpath
7-
<li class="footer">$generatedby <a href="https://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion </li>
8-
</ul>
9-
</div>
104
<!--END GENERATE_TREEVIEW-->
115
<!--BEGIN !GENERATE_TREEVIEW-->
12-
<hr class="footer"/><address class="footer"><small>
13-
$generatedby&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion
14-
</small></address>
156
<!--END !GENERATE_TREEVIEW-->
167
</body>
178
</html>

docs/index.html

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,33 @@
1414
<meta charset="UTF-8">
1515
<meta http-equiv="X-UA-Compatible" content="IE=edge">
1616
<meta name="viewport" content="width=device-width, initial-scale=1.0">
17-
<title>MFC | Home</title>
18-
<meta name="description" content="MFC is an exascale multiphysics CFD solver maintained by the research groups of Profs. Bryngelson and Colonius." />
19-
<meta name=”keywords” content="exascale, fluid dynamics, cfd, computational fluid dynamics, compressible, hpc, bryngelson, colonius, subgrid, multiphase, frontier, summit, el capitan, aurora, amd gpu, gpu, nvidia"/>
17+
<title>MFC | Exascale Multiphase Flow Solver</title>
18+
<meta name="description" content="MFC is an open-source exascale multiphase flow solver and 2025 Gordon Bell Prize Finalist. Scales to 200+ trillion grid points on 43,000+ GPUs." />
19+
<meta name="keywords" content="exascale, fluid dynamics, cfd, computational fluid dynamics, compressible, hpc, bryngelson, colonius, subgrid, multiphase, frontier, summit, el capitan, aurora, amd gpu, gpu, nvidia, gordon bell"/>
20+
<meta property="og:title" content="MFC - Exascale Multiphase Flow Solver" />
21+
<meta property="og:description" content="Open-source exascale multiphase flow solver. 2025 Gordon Bell Prize Finalist. Scales to 200+ trillion grid points on 43,000+ GPUs." />
22+
<meta property="og:image" content="https://mflowcode.github.io/res/banner.png" />
23+
<meta property="og:url" content="https://mflowcode.github.io" />
24+
<meta property="og:type" content="website" />
25+
<meta name="twitter:card" content="summary_large_image" />
2026
<script src="https://cdn.tailwindcss.com"></script>
2127
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
2228
<link rel="icon" type="image/x-icon" href="res/icon.ico">
2329
<script>
2430
const sims = [
25-
{ name: "Viscous Taylor-Green vortex", image: "res/simulations/h.png", computer: "Delta", accelerators: "128 A100s", walltime: "17h", source: "https://vimeo.com/1019922003?share=copy" },
26-
{ name: "Shedding water droplet", image: "res/simulations/a.png", computer: "Summit", accelerators: "960 V100s", walltime: "4h", source: "https://player.vimeo.com/video/905208069" },
27-
{ name: "Flow over an airfoil (vorticity)", image: "res/simulations/g.png", computer: "Delta", accelerators: "128 A100s", walltime: "19h", source: "https://vimeo.com/917305340/c05fd414c8?share=copy" },
31+
{ name: "Viscous Taylor-Green vortex", image: "res/simulations/h.png", computer: "Delta", accelerators: "128 A100s", walltime: "17h", source: "https://www.youtube.com/watch?v=7i2h08dlDQw" },
32+
{ name: "Shedding water droplet", image: "res/simulations/a.png", computer: "Summit", accelerators: "960 V100s", walltime: "4h", source: "https://www.youtube.com/watch?v=Gjj-qZkXcrg" },
33+
{ name: "Flow over an airfoil (vorticity)", image: "res/simulations/g.png", computer: "Delta", accelerators: "128 A100s", walltime: "19h", source: "https://www.youtube.com/watch?v=FvAgnBW59cY" },
2834
{ name: "Cavitation fragments kidney stone", image: "res/simulations/d.png", computer: "Summit", accelerators: "576 V100s", walltime: "30 min", source: "https://doi.org/10.48550/arXiv.2305.09163" },
29-
{ name: "Breakup of vibrated interface", image: "res/simulations/f.png", computer: "Summit", accelerators: "128 V100s", walltime: "4h", source: "https://player.vimeo.com/video/922022757" },
30-
{ name: "Mach 2 flow over a sphere", image: "res/simulations/i.png", computer: "Phoenix", accelerators: "36 V100s", walltime: "30m", source: "https://vimeo.com/1020775531?share=copy" },
31-
{ name: "Mach 2 shear layer", image: "res/simulations/j.png", computer: "Phoenix", accelerators: "32 V100s", walltime: "15m", source: "https://vimeo.com/1020775541?share=copy" },
35+
{ name: "Breakup of vibrated interface", image: "res/simulations/f.png", computer: "Summit", accelerators: "128 V100s", walltime: "4h", source: "https://www.youtube.com/watch?v=XQ3g1oSg8mc" },
36+
{ name: "Mach 2 flow over a sphere", image: "res/simulations/i.png", computer: "Phoenix", accelerators: "36 V100s", walltime: "30m", source: "https://www.youtube.com/watch?v=HQGSUvYEGqM" },
37+
{ name: "Mach 2 shear layer", image: "res/simulations/j.png", computer: "Phoenix", accelerators: "32 V100s", walltime: "15m", source: "https://www.youtube.com/watch?v=GtcdCHLmJO8" },
3238
{ name: "Collapsing bubbles (pressure)", image: "res/simulations/b.png", computer: "Summit", accelerators: "216 V100s", walltime: "3h", source: "https://doi.org/10.48550/arXiv.2305.09163" },
3339
{ name: "Collapsing bubbles (streamlines)", image: "res/simulations/c.png", computer: "Summit", accelerators: "216 V100s", walltime: "3h", source: "https://doi.org/10.48550/arXiv.2305.09163" },
3440
];
3541

3642
const scalings = [
37-
{ image: "res/weakScaling/frontier.svg", label: "Oak Ridge Frontier (AMD MI250X GPUs)" },
38-
{ image: "res/weakScaling/summit.svg", label: "Oak Ridge Summit (NVIDIA V100 GPUs)" },
43+
{ image: "res/weakScaling/weakscaling.png", label: "Weak scaling on El Capitan (MI300A), Frontier (MI250X), and Alps (GH200)" },
3944
];
4045

4146
document.addEventListener("DOMContentLoaded", () => {
@@ -71,7 +76,7 @@
7176
`).join("");
7277

7378
document.getElementById("ft-scaling").innerHTML = scalings.map(s => `
74-
<div class="flex md:w-2/6 flex-col text-white rounded bg-slate-900 rounded-b-lg">
79+
<div class="flex md:w-2/6 mx-auto flex-col text-white rounded bg-slate-900 rounded-b-lg">
7580
<div class="flex-1 grid bg-white pb-2">
7681
<img class="place-self-center" src="${s.image}" alt="${s.label}">
7782
</div>
@@ -118,12 +123,15 @@
118123
<div class="w-full flex flex-col gap-4">
119124
<img src="res/banner.png" class="h-20 md:h-24 mx-auto">
120125
</div>
121-
<div class="w-full flex flex-col text-white text-md md:text-lg text-justify font-semibold">
126+
<div class="w-full flex flex-col text-white text-md md:text-lg text-justify font-semibold gap-3">
122127
An exascale compressible multiphase and multiphysics flow code.
128+
<span class="text-amber-400 text-sm md:text-base font-bold">
129+
2025 Gordon Bell Prize Finalist - 200+ trillion grid points on 43,000+ GPUs
130+
</span>
123131
</div>
124132
</div>
125133
<div class="flex mx-auto">
126-
<div class="justify-center grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-x-4 md:gap-x-8 text-md md:text-xl text-center text-white font-medium">
134+
<div class="justify-center grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-x-4 md:gap-x-8 text-md md:text-xl text-center text-white font-medium">
127135
<a class="px-4 flex flex-row items-center py-4 border-b-2 hover:border-amber-400" href="https://github.com/MFlowCode/MFC">
128136
<i class="pr-4 fa-brands fa-github"></i>
129137
<span class="flex-1">GitHub</span>
@@ -147,6 +155,10 @@
147155
<i class="pr-4 fa-solid fa-newspaper"></i>
148156
<span class="flex-1">Papers</span>
149157
</a>
158+
<a class="px-4 flex flex-row items-center py-4 border-b-2 hover:border-amber-400" href="https://www.youtube.com/@MFCode" target="_blank">
159+
<i class="pr-4 fa-brands fa-youtube"></i>
160+
<span class="flex-1">YouTube</span>
161+
</a>
150162
</div>
151163
</div>
152164
</div>
@@ -198,7 +210,7 @@ <h1 class="flex-1 flex flex-col justify-center gap-y-4">
198210
</div>
199211
<div class="text-justify flex-1 text-xs md:text-sm text-neutral-300">
200212
Multiple 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 the National Science Foundation (NSF).
201-
MFC computations use OLCF Frontier, Summit, and Wombat; LLNC LC Tuolumne and Lassen; and many ACCESS-CI systems
213+
MFC computations use OLCF Frontier, Summit, and Wombat; LLNL El Capitan, Tuolumne, and Lassen; and many ACCESS-CI systems
202214
</div>
203215
</div>
204216
</body>
188 KB
Loading
164 KB
Loading

toolchain/mfc/cli/docs_gen.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,9 @@ def _generate_commands_by_category(
213213
def generate_cli_reference(schema: CLISchema) -> str:
214214
"""Generate complete CLI reference documentation in markdown."""
215215
lines = [
216-
"@page cli-reference Command Line Reference",
216+
"@page cli-reference CLI Reference",
217217
"",
218-
"# Command Line Reference",
218+
"# CLI Reference",
219219
"",
220220
"> **Auto-generated** from `toolchain/mfc/cli/commands.py`",
221221
"> ",

0 commit comments

Comments
 (0)