Skip to content

Commit 6f200c0

Browse files
authored
Merge branch 'MFlowCode:master' into source
2 parents e51bde2 + 0c345ea commit 6f200c0

File tree

317 files changed

+6318
-6639
lines changed

Some content is hidden

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

317 files changed

+6318
-6639
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/bash
22

33
. ./mfc.sh load -c f -m g
4-
./mfc.sh build -j 8 --gpu
4+
./mfc.sh build -j 8 --gpu --sys-hdf5 --sys-fftw

.github/workflows/frontier/test.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
#!/bin/bash
22

3-
./mfc.sh test -j 4 -a -- -c frontier
3+
gpus=`rocm-smi --showid | awk '{print $1}' | grep -Eo '[0-9]+' | uniq | tr '\n' ' '`
4+
ngpus=`echo "$gpus" | tr -d '[:space:]' | wc -c`
5+
6+
./mfc.sh test -j $ngpus --sys-hdf5 --sys-fftw -- -c frontier

.github/workflows/spelling.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ jobs:
1111
uses: actions/checkout@v4
1212

1313
- name: Spell Check
14-
uses: crate-ci/typos@master
15-
with:
16-
config: .typos.toml
14+
run: ./mfc.sh spelling

.gitignore

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package.json
33
yarn.lock
44
docker-compose.yml
55

6+
.venv/
67
/build/
78
.vscode/
89
src/*/include/case.fpp
@@ -35,26 +36,27 @@ docs/documentation/*-example.png
3536
docs/documentation/examples.md
3637

3738
examples/*batch/*/
38-
examples/*/D/*
39-
examples/*/p*
40-
examples/*/D_*
41-
examples/*/*.inf
42-
examples/*/*.inp
43-
examples/*/*.dat
44-
examples/*/*.o*
45-
examples/*/silo*
46-
examples/*/restart_data*
47-
examples/*/*.out
48-
examples/*/binary
49-
examples/*/fort.1
50-
examples/*/*.sh
51-
examples/*/*.err
52-
examples/*/viz/
39+
examples/**/D/*
40+
examples/**/p*
41+
examples/**/D_*
42+
examples/**/*.inf
43+
examples/**/*.inp
44+
examples/**/*.dat
45+
examples/**/*.o*
46+
examples/**/silo*
47+
examples/**/restart_data*
48+
examples/**/*.out
49+
examples/**/binary
50+
examples/**/fort.1
51+
examples/**/*.sh
52+
examples/**/*.err
53+
examples/**/viz/
5354
examples/*.jpg
5455
examples/*.png
5556
examples/*/workloads/
5657
examples/*/run-*/
5758
examples/*/logs/
59+
examples/**/*.f90
5860
workloads/
5961

6062
benchmarks/*batch/*/

.vscode/settings.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"**/.git": true,
88
"**/.DS_Store": true,
99
"**/build": true,
10-
"*.o": true,
11-
"*.mod": true
10+
"**/*.o": true,
11+
"**/*.mod": true,
1212
},
1313

1414
"cmake.configureOnOpen": false,
@@ -17,7 +17,7 @@
1717

1818
"files.associations": {
1919
"*.f90": "FortranFreeForm",
20-
"*.fpp": "FortranFreeForm"
20+
"*.fpp": "FortranFreeForm",
2121
},
2222

2323
"fortran.preferredCase": "lowercase",
@@ -27,5 +27,5 @@
2727
"${workspacefolder}/src/common",
2828
"${workspacefolder}/src/common/include"
2929
],
30-
"fortran.linter.extraArgs": ["--free-form"]
30+
"fortran.linter.extraArgs": ["--free-form"],
3131
}

CMakeLists.txt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,24 +55,25 @@ compiler (or a different version thereof), please:\n\
5555
- Install the compiler or load its module. (e.g. module load gcc/10.1)\n\
5656
- Set/Export the C, CXX, and FC environment variables. (e.g. 'export CC=gcc', \
5757
'export CXX=g++', and 'export FC=gfortran'.\n\
58-
- If using mfc.sh, delete the build/<code name> directory and try again. (e.g. 'rm -rf build/pre_process')\n")
58+
- If using mfc.sh, delete the build/<code name> directory and try again. (e.g. 'rm -rf build/pre_process')")
5959

6060
if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
6161
if (CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 5)
62-
message(FATAL_ERROR "${__err_msg}ERROR: GNU v5.0 or newer is required to build MFC.")
62+
message(FATAL_ERROR "ERROR: GNU v5.0 or newer is required to build MFC.\n${__err_msg}")
6363
endif()
6464
if (MFC_OpenACC)
65-
message(FATAL_ERROR "${__err_msg}ERROR: MFC with GPU processing is not currently compatible with GNU compilers. Please use NVIDIA or Cray compilers.")
65+
message(FATAL_ERROR "ERROR: MFC with GPU processing is not currently compatible with GNU compilers. Please use NVIDIA or Cray compilers.\n${__err_msg}")
6666
endif()
6767
elseif ((CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_Fortran_COMPILER_ID STREQUAL "PGI"))
6868
if (CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 21.7)
69-
message(FATAL_ERROR "${__err_msg}ERROR: When using NVHPC, v21.7 or newer is required to build MFC.")
69+
message(FATAL_ERROR "ERROR: When using NVHPC, v21.7 or newer is required to build MFC.\n${__err_msg}")
7070
endif()
71-
if ((CMAKE_BUILD_TYPE STREQUAL "Debug") AND MFC_OpenACC)
72-
message(FATAL_ERROR "${__err_msg}ERROR: When using NVHPC, MFC with Debug and GPU options is unavailable.")
71+
72+
if ((CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 23.11) AND (CMAKE_BUILD_TYPE STREQUAL "Debug") AND MFC_OpenACC)
73+
message(FATAL_ERROR "ERROR: When using NVHPC, MFC with Debug and GPU options requires NVHPC v23.11 or newer.\n${__err_msg}")
7374
endif()
7475
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
75-
message(FATAL_ERROR "${__err_msg}ERROR: MFC does not support the Apple Clang compilers. Please consult the documentation.")
76+
message(FATAL_ERROR "ERROR: MFC does not support the Apple Clang compilers. Please consult the documentation.\n${__err_msg}")
7677
endif()
7778

7879
# Fypp is required to build MFC. We try to locate it. The path to the binary is
@@ -127,13 +128,15 @@ if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
127128
-fbacktrace
128129
-fimplicit-none
129130
#-ffpe-trap=invalid,zero,denormal,overflow
130-
)
131+
-fsignaling-nans
132+
)
131133
endif()
132134

133135
if (CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 10)
134136
add_compile_options(
135137
$<$<COMPILE_LANGUAGE:Fortran>:-fallow-invalid-boz>
136138
$<$<COMPILE_LANGUAGE:Fortran>:-fallow-argument-mismatch>
139+
$<$<COMPILE_LANGUAGE:Fortran>:-fcheck=bounds>
137140
)
138141
endif()
139142
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
@@ -183,7 +186,7 @@ elseif ((CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_Fortran_COMPILER_
183186
endif()
184187

185188
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
186-
add_compile_options(-C -g -O0 -traceback -Mchkptr -Minform=inform -Mbounds)
189+
add_compile_options(-C -g -O0 -traceback -Minform=inform -Mbounds)
187190
endif()
188191

189192
if (DEFINED ENV{MFC_CUDA_CC})

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ The shock-droplet interaction case above was run via
8484
```shell
8585
./mfc.sh run -n $(nproc) ./examples/3d_shockdroplet/case.py
8686
```
87-
where `8` is the number of cores the example will run on.
87+
where `$(nproc)` is the number of cores the example will run on (and the number of physical cores on your CPU device).
8888
You can visualize the output data in `examples/3d_shockdroplet/silo_hdf5` via Paraview, Visit, or your favorite software.
8989

9090
## Is this _really_ exascale?

docs/documentation/expectedPerformance.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,31 @@ These are reported as (X/Y cores), where X is the used cores, and Y is the total
3030
| NVIDIA A30 | | GPU | 1 GPU | 1.1 | NVHPC 24.1 | GT Rogues Gallery |
3131
| AMD MI250X | | GPU | 1 _GCD_* | 1.1 | CCE 16.0.1 | OLCF Frontier |
3232
| AMD MI100 | | GPU | 1 GPU | 1.4 | CCE 16.0.1 | Cray internal system |
33-
| NVIDIA L40S | Single-precision GPU | GPU | 1 GPU | 1.7 | NVHPC 24.5 | GT ICE |
33+
| NVIDIA L40S | Single-precision GPU | GPU | 1 GPU | 1.7 | NVHPC 24.5 | GT ICE |
34+
| AMD EPYC 9654 | Genoa | CPU | 96/96 cores | 1.7 | Intel oneAPI 2021.9 | DOD Carpenter |
3435
| NVIDIA P100 | | GPU | 1 GPU | 2.4 | NVHPC 23.5 | GT CSE Internal |
3536
| AMD EPYC 9534 | Genoa | CPU | 64/64 cores | 2.7 | GNU 12.3.0 | GT Phoenix |
3637
| NVIDIA A40 | Single-precision GPU | GPU | 1 GPU | 3.3 | NVHPC 22.11 | NCSA Delta |
3738
| NVIDIA Grace CPU | Arm, Neoverse V2 | CPU | 72/72 cores | 3.7 | NVHPC 24.1 | GT Rogues Gallery |
38-
| NVIDIA RTX6000 | Single-precision GPU | GPU | 1 GPU | 3.9 | NVHPC 22.11 | GT Phoenix |
39+
| NVIDIA RTX6000 | Single-precision GPU | GPU | 1 GPU | 3.9 | NVHPC 22.11 | GT Phoenix |
3940
| AMD EPYC 7763 | Milan | CPU | 64/64 cores | 4.1 | GNU 11.4.0 | NCSA Delta |
4041
| AMD EPYC 7713 | Milan | CPU | 64/64 cores | 5.0 | GNU 12.3.0 | GT Phoenix |
41-
| Intel Xeon 8480CL | Platinum, Sapphire Rapids | CPU | 56/56 cores | 5.0 | NVHPC 24.5 | GT Phoenix |
42-
| Intel Xeon 6454S | Gold, Sapphire Rapids | CPU | 32/32 cores | 5.6 | NVHPC 24.5 | GT Rogues Gallery |
43-
| Intel Xeon 8462Y+ | Platinum, Sapphire Rapids | CPU | 32/32 cores | 6.2 | GNU 12.3.0 | GT ICE |
44-
| Intel Xeon 6548Y+ | Gold, Emerald Rapids | CPU | 32/32 cores | 6.6 | Intel oneAPI 2021.9 | GT ICE |
45-
| Intel Xeon 8352Y | Platinum, Ice Lake | CPU | 32/32 cores | 6.6 | NVHPC 24.5 | GT Rogues Gallery |
42+
| Intel Xeon 8480CL | Sapphire Rapids | CPU | 56/56 cores | 5.0 | NVHPC 24.5 | GT Phoenix |
43+
| Intel Xeon 6454S | Sapphire Rapids | CPU | 32/32 cores | 5.6 | NVHPC 24.5 | GT Rogues Gallery |
44+
| Intel Xeon 8462Y+ | Sapphire Rapids | CPU | 32/32 cores | 6.2 | GNU 12.3.0 | GT ICE |
45+
| Intel Xeon 6548Y+ | Emerald Rapids | CPU | 32/32 cores | 6.6 | Intel oneAPI 2021.9 | GT ICE |
46+
| Intel Xeon 8352Y | Ice Lake | CPU | 32/32 cores | 6.6 | NVHPC 24.5 | GT Rogues Gallery |
4647
| Ampere Altra Q80-28 | Arm, Neoverse-N1 | CPU | 80/80 cores | 6.8 | GNU 12.2.0 | OLCF Wombat |
4748
| AMD EPYC 7513 | Milan | CPU | 32/32 cores | 7.4 | GNU 12.3.0 | GT ICE |
4849
| AMD EPYC 7452 | Rome | CPU | 32/32 cores | 8.4 | GNU 12.3.0 | GT ICE |
50+
| IBM Power10 | | CPU | 24/24 cores | 10 | GNU 13.3.1 | GT Rogues Gallery |
4951
| AMD EPYC 7401 | Naples | CPU | 24/24 cores | 10 | GNU 10.3.1 | LLNL Corona |
5052
| Apple M1 Pro | | CPU | 8/10 cores | 14 | GNU 13.2.0 | N/A |
51-
| Intel Xeon Gold 6226 | Cascade Lake | CPU | 12/12 cores | 17 | GNU 12.3.0 | GT ICE |
53+
| Intel Xeon 6226 | Cascade Lake | CPU | 12/12 cores | 17 | GNU 12.3.0 | GT ICE |
5254
| Apple M1 Max | | CPU | 8/10 cores | 18 | GNU 14.1.0 | N/A |
5355
| IBM Power9 | | CPU | 20/21 cores | 21 | GNU 9.1.0 | OLCF Summit |
5456
| Intel Xeon E5-2650V4 | Broadwell | CPU | 12/12 cores | 27 | NVHPC 23.5 | GT CSE Internal |
57+
| Intel Xeon E7-4850V3 | Haswell | CPU | 14/14 cores | 34 | GNU 9.4.0 | GT CSE Internal |
5558

5659
__All grind times are in nanoseconds (ns) per grid point (gp) per equation (eq) per right-hand side (rhs) evaluation, so X ns/gp/eq/rhs. Lower is better.__
5760

examples/3D_sphbubcollapse/case.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
# ==========================================================================
4646

4747
# Simulation Algorithm Parameters ==========================================
48-
# Only two patches are necesssary, the background liquid and the
48+
# Only two patches are necessary, the background liquid and the
4949
# gas bubble
5050
'num_patches' : 2,
5151
# Use the 6 equation model

mfc.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ elif [ "$1" '==' "venv" ]; then
3838
shift; . "$(pwd)/toolchain/bootstrap/python.sh" $@; return
3939
elif [ "$1" '==' "clean" ]; then
4040
rm -rf "$(pwd)/build"; exit 0
41+
elif [ "$1" '==' "spelling" ]; then
42+
. "$(pwd)/toolchain/bootstrap/python.sh"
43+
44+
shift; . "$(pwd)/toolchain/bootstrap/spelling.sh" $@; exit 0
4145
fi
4246

4347
mkdir -p "$(pwd)/build"

0 commit comments

Comments
 (0)