Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
8584e89
Update mfc python and cmake to support OpenMP
prathi-wind Jul 18, 2025
7521731
Fixed issue with not compiling on CPU builds
prathi-wind Jul 18, 2025
90c6738
Temporary commit
prathi-wind Jul 18, 2025
06a783e
OMP parallel and parallel loop
prathi-wind Jul 20, 2025
2abfad5
Removed pure markings
prathi-wind Jul 20, 2025
db1b8c5
Added routine and declare and partial data, non compiling
prathi-wind Jul 21, 2025
ed29d13
Some manual changes to codebase, and implemented attach
prathi-wind Jul 21, 2025
c1b41a6
Changed parallel loop to also include the end parallel
Jul 21, 2025
29e9404
Ran formatter
prathi-wind Jul 21, 2025
cec9867
Fixed some issues with matching start and end of parallel loop macros…
prathi-wind Jul 21, 2025
33eca5f
Moved macro code to their corresponding file, and finished enter data…
prathi-wind Jul 21, 2025
11822f5
remove line that sets default_val to empty string
prathi-wind Jul 22, 2025
314fa13
Fixed GPU_PARALLEL for omp and ran formatter
prathi-wind Jul 22, 2025
9d23036
Add syscheck of OpenMP, add omp support for GPU_HOST_DATA, ATOMIC, an…
prathi-wind Jul 22, 2025
de586ad
Update var name
prathi-wind Jul 23, 2025
84ddc01
Change how parallel loop is translated
prathi-wind Jul 23, 2025
7246e9b
Ran formatter
prathi-wind Jul 23, 2025
d5381aa
Remove extraneous build flags
prathi-wind Jul 23, 2025
dbcb6f3
Remove thermochem function calls
prathi-wind Jul 24, 2025
94222f4
Remove LTO add always to data allocation omp, switch delete to releas…
prathi-wind Jul 24, 2025
473d19d
Fixed parallel loop when no OpenMP or OpenACC
prathi-wind Jul 24, 2025
5703c19
Update how allocate macro works, update riemann solver, and parallel …
prathi-wind Jul 25, 2025
7021690
Passing most 1D cases
prathi-wind Jul 25, 2025
828d9d8
Fixed IGR 2D, readded parallel loop in cbc, undid changes in derived …
prathi-wind Jul 25, 2025
cb02511
Forgot to add something for IGR and add back parallel loop for data o…
prathi-wind Jul 25, 2025
69b5792
change binding + test suite works
Jul 28, 2025
a01f262
Added missing space
prathi-wind Jul 28, 2025
d7fbcab
Chemistry works with OpenACC and almost works with OpenMP
wilfonba Jul 29, 2025
0d550aa
Readd LTO to cmake
prathi-wind Jul 29, 2025
bac089d
Update toolchain to support swapping between OpenACC and OpenMP
prathi-wind Jul 29, 2025
555cf06
Add themochem build for CPU
prathi-wind Jul 29, 2025
16c9ce3
pyro updates
wilfonba Jul 29, 2025
d7dfc0d
compiles and runs with OpenMP on CCE but fails all tests
wilfonba Jul 30, 2025
d52abd2
Add AMD compiler support, different macro expansions based on compiler
Jul 31, 2025
cc8cd81
Remove autocompare as failing debug cases, fix COMPILER_ID bug
prathi-wind Jul 31, 2025
e28423a
made nonparameterized molecular_weights to compile few AMD kernels, m…
Aug 1, 2025
aaa0ddf
Test suite passes fully on Phoenix (NVHPC + OPENMP), Fixes failing ch…
Aug 1, 2025
8db9452
Merge remote-tracking branch 'upstream/master' into openmp_nvidia_mer…
prathi-wind Sep 15, 2025
ced589a
OpenMP CI added
prathi-wind Sep 15, 2025
5bb1557
Merge remote-tracking branch 'upstream/master' into openmp_nvidia_mer…
prathi-wind Sep 15, 2025
11a98bf
Fixed issues from merge
prathi-wind Sep 15, 2025
3ee82f5
Ran formatter
prathi-wind Sep 15, 2025
116fe83
Update lint to ignore other gpu macro files
prathi-wind Sep 15, 2025
14cac1f
Fixed linting toolchain issues
prathi-wind Sep 15, 2025
063fd64
Updated job slug
prathi-wind Sep 15, 2025
2e37629
Merge branch 'master' into openmp_nvidia_merged_master
prathi-wind Sep 15, 2025
5c01cf4
Fixed cylindrical
prathi-wind Sep 22, 2025
d15e2ff
Merge remote-tracking branch 'upstream/master' into openmp_nvidia_mer…
prathi-wind Sep 22, 2025
2cad739
Ran formatter
prathi-wind Sep 22, 2025
4b913af
Change doubles to wp
prathi-wind Sep 22, 2025
110e497
Mostly fixed IBM test cases
prathi-wind Sep 22, 2025
d69a62b
Ran formatter
prathi-wind Sep 22, 2025
10f3361
Fixed case when num_gps is 0 for OpenMP
prathi-wind Sep 22, 2025
2ce9308
Merge remote-tracking branch 'upstream/master' into openmp_nvidia_mer…
prathi-wind Oct 3, 2025
1db105f
Ran formatter
prathi-wind Oct 3, 2025
e2b11f9
Exit with OMP and Frontier test
prathi-wind Oct 3, 2025
d7f4386
Fixed typos
Oct 3, 2025
01a4dea
Update docs
prathi-wind Oct 3, 2025
6ca7604
Exit on frontier openmp build
prathi-wind Oct 3, 2025
31f8cd2
Chemistry variable was not autoprivatized
Oct 7, 2025
e81b884
Don't run frontier omp test
Oct 7, 2025
d0914c9
Merge remote-tracking branch 'upstream/master' into openmp_nvidia_mer…
prathi-wind Oct 7, 2025
4cdabd9
Ran formatter
prathi-wind Oct 7, 2025
4db238b
Fix issue in frontier test script
prathi-wind Oct 7, 2025
865c6e2
1D Chemistry seems to have an issue with two-pass IPO
prathi-wind Oct 7, 2025
cc25407
Issue with frontier test fix
prathi-wind Oct 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 28 additions & 9 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,40 @@ jobs:
labels: gt
flag: p
device: cpu
interface: none
build_script: ""
- cluster: phoenix
name: Georgia Tech | Phoenix (NVHPC)
group: phoenix
labels: gt
flag: p
device: gpu
interface: acc
build_script: ""
- cluster: phoenix
name: Georgia Tech | Phoenix (NVHPC)
group: phoenix
labels: gt
flag: p
device: gpu
interface: omp
build_script: ""
- cluster: frontier
name: Oak Ridge | Frontier (CCE)
group: phoenix
labels: frontier
flag: f
device: gpu
interface: acc
build_script: "bash .github/workflows/frontier/build.sh gpu acc bench"
- cluster: frontier
name: Oak Ridge | Frontier (CCE)
group: phoenix
labels: frontier
flag: f
device: gpu
build_script: "bash .github/workflows/frontier/build.sh gpu bench"
interface: omp
build_script: "bash .github/workflows/frontier/build.sh gpu omp bench"
runs-on:
group: ${{ matrix.group }}
labels: ${{ matrix.labels }}
Expand Down Expand Up @@ -80,29 +99,29 @@ jobs:

- name: Bench (Master v. PR)
run: |
(cd pr && bash .github/workflows/${{ matrix.cluster }}/submit-bench.sh .github/workflows/${{ matrix.cluster }}/bench.sh ${{ matrix.device }}) &
(cd master && bash .github/workflows/${{ matrix.cluster }}/submit-bench.sh .github/workflows/${{ matrix.cluster }}/bench.sh ${{ matrix.device }}) &
(cd pr && bash .github/workflows/${{ matrix.cluster }}/submit-bench.sh .github/workflows/${{ matrix.cluster }}/bench.sh ${{ matrix.device }} ${{ matrix.interface }}) &
(cd master && bash .github/workflows/${{ matrix.cluster }}/submit-bench.sh .github/workflows/${{ matrix.cluster }}/bench.sh ${{ matrix.device }} ${{ matrix.interface }}) &
wait %1 && wait %2

- name: Generate & Post Comment
run: |
(cd pr && . ./mfc.sh load -c ${{ matrix.flag }} -m g)
(cd pr && ./mfc.sh bench_diff ../master/bench-${{ matrix.device }}.yaml ../pr/bench-${{ matrix.device }}.yaml)
(cd pr && ./mfc.sh bench_diff ../master/bench-${{ matrix.device }}-${{ matrix.interface }}.yaml ../pr/bench-${{ matrix.device }}-${{ matrix.interface }}.yaml)

- name: Print Logs
if: always()
run: |
cat pr/bench-${{ matrix.device }}.* 2>/dev/null || true
cat master/bench-${{ matrix.device }}.* 2>/dev/null || true
cat pr/bench-${{ matrix.device }}-${{ matrix.interface }}.* 2>/dev/null || true
cat master/bench-${{ matrix.device }}-${{ matrix.interface }}.* 2>/dev/null || true

# All other runners (non-Phoenix) just run without special env
- name: Archive Logs (Frontier)
if: always() && matrix.cluster != 'phoenix'
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.cluster }}-${{ matrix.device }}
name: ${{ matrix.cluster }}-${{ matrix.device }}-${{ matrix.interface }}
path: |
pr/bench-${{ matrix.device }}.*
pr/bench-${{ matrix.device }}-${{ matrix.interface }}.*
pr/build/benchmarks/*
master/bench-${{ matrix.device }}.*
master/bench-${{ matrix.device }}-${{ matrix.interface }}.*
master/build/benchmarks/*
10 changes: 8 additions & 2 deletions .github/workflows/frontier/bench.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
#!/bin/bash

n_ranks=12

device_opts=""
if [ "$job_device" = "gpu" ]; then
gpus=$(rocm-smi --showid | awk '{print $1}' | grep -Eo '[0-9]+' | uniq | tr '\n' ' ')
n_ranks=$(echo "$gpus" | wc -w) # number of GPUs on node
gpu_ids=$(echo "$gpus" | tr ' ' '\n' | tr '\n' ' ' | sed 's/ $//') # GPU IDs from rocm-smi
device_opts="--gpu -g $gpu_ids"
device_opts+="--gpu"
if [ "$job_interface" = "acc" ]; then
device_opts+=" acc"
elif [ "$job_interface" = "omp" ]; then
device_opts+=" mp"
fi
device_opts+=" -g $gpu_ids"
fi

if [ "$job_device" = "gpu" ]; then
Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/frontier/build.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
#!/bin/bash

job_device=$1
job_interface=$2
run_bench=$3
build_opts=""
if [ "$1" = "gpu" ]; then
build_opts="--gpu"
if [ "$job_device" = "gpu" ]; then
build_opts+="--gpu"
if [ "$job_interface" = "acc" ]; then
build_opts+=" acc"
elif [ "$job_interface" = "omp" ]; then
build_opts+=" mp"
fi
fi

. ./mfc.sh load -c f -m g

if [ "$2" == "bench" ]; then
if [ "$run_bench" == "bench" ]; then
for dir in benchmarks/*/; do
dirname=$(basename "$dir")
./mfc.sh run "$dir/case.py" --case-optimization -j 8 --dry-run $build_opts
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/frontier/submit-bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ else
fi


job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2"
job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2-$3"

sbatch <<EOT
#!/bin/bash
Expand All @@ -45,6 +45,7 @@ echo "Running in $(pwd):"

job_slug="$job_slug"
job_device="$2"
job_interface="$3"

. ./mfc.sh load -c f -m g

Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/frontier/submit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ else
fi


job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2"
job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2-$3"

sbatch <<EOT
#!/bin/bash
Expand All @@ -46,6 +46,7 @@ echo "Running in $(pwd):"

job_slug="$job_slug"
job_device="$2"
job_interface="$3"

. ./mfc.sh load -c f -m g

Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/frontier/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,18 @@
gpus=`rocm-smi --showid | awk '{print $1}' | grep -Eo '[0-9]+' | uniq | tr '\n' ' '`
ngpus=`echo "$gpus" | tr -d '[:space:]' | wc -c`

device_opts=""
if [ "$job_device" = "gpu" ]; then
./mfc.sh test -a --rdma-mpi --max-attempts 3 -j $ngpus -- -c frontier
device_opts+="--gpu"
if [ "$job_interface" = "acc" ]; then
device_opts+=" acc"
elif [ "$job_interface" = "omp" ]; then
device_opts+=" mp"
fi
fi

if [ "$job_device" = "gpu" ]; then
./mfc.sh test -a --rdma-mpi --max-attempts 3 -j $ngpus $device_opts -- -c frontier
else
./mfc.sh test -a --max-attempts 3 -j 32 -- -c frontier
fi
2 changes: 1 addition & 1 deletion .github/workflows/lint-source.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:

- name: Looking for raw directives
run: |
! grep -iR '!\$acc\|!\$omp' --exclude="parallel_macros.fpp" --exclude="syscheck.fpp" ./src/*
! grep -iR '!\$acc\|!\$omp' --exclude="parallel_macros.fpp" --exclude="acc_macros.fpp" --exclude="omp_macros.fpp" --exclude="shared_parallel_macros.fpp" --exclude="syscheck.fpp" ./src/*

- name: No double precision intrinsics
run: |
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/phoenix/bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@

n_ranks=12

echo "My interface is:" $job_interface
device_opts=""
if [ "$job_device" = "gpu" ]; then
n_ranks=$(nvidia-smi -L | wc -l) # number of GPUs on node
gpu_ids=$(seq -s ' ' 0 $(($n_ranks-1))) # 0,1,2,...,gpu_count-1
device_opts="--gpu -g $gpu_ids"
device_opts+="--gpu"
if [ "$job_interface" = "acc" ]; then
device_opts+=" acc"
elif [ "$job_interface" = "omp" ]; then
device_opts+=" mp"
fi
device_opts+=" -g $gpu_ids"
fi

tmpbuild=/storage/scratch1/6/sbryngelson3/mytmp_build
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/phoenix/submit-bench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

usage() {
echo "Usage: $0 [script.sh] [cpu|gpu]"
echo "Usage: $0 [script.sh] [cpu|gpu] [none|acc|omp]"
}

if [ ! -z "$1" ]; then
Expand Down Expand Up @@ -34,7 +34,7 @@ else
exit 1
fi

job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2"
job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2-$3"

sbatch <<EOT
#!/bin/bash
Expand All @@ -55,6 +55,7 @@ echo "Running in $(pwd):"

job_slug="$job_slug"
job_device="$2"
job_interface="$3"

. ./mfc.sh load -c p -m $2

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/phoenix/submit.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
set -e

usage() {
echo "Usage: $0 [script.sh] [cpu|gpu]"
echo "Usage: $0 [script.sh] [cpu|gpu] [none|acc|omp]"
}

if [ ! -z "$1" ]; then
Expand Down Expand Up @@ -34,7 +34,7 @@ else
exit 1
fi

job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2"
job_slug="`basename "$1" | sed 's/\.sh$//' | sed 's/[^a-zA-Z0-9]/-/g'`-$2-$3"

sbatch <<EOT
#!/bin/bash
Expand All @@ -55,10 +55,10 @@ echo "Running in $(pwd):"

job_slug="$job_slug"
job_device="$2"
job_interface="$3"

. ./mfc.sh load -c p -m $2

$sbatch_script_contents

EOT

EOT
5 changes: 5 additions & 0 deletions .github/workflows/phoenix/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
build_opts=""
if [ "$job_device" = "gpu" ]; then
build_opts="--gpu"
if [ "$job_interface" = "omp" ]; then
build_opts+=" mp"
elif [ "$job_interface" = "acc" ]; then
build_opts+=" acc"
fi
fi

./mfc.sh test --dry-run -j 8 $build_opts
Expand Down
26 changes: 19 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,20 @@ jobs:
timeout-minutes: 1400
strategy:
matrix:
device: ['cpu', 'gpu']
device: ['gpu']
interface: ['acc', 'omp']
lbl: ['gt', 'frontier']
include:
- device: 'cpu'
interface: 'none'
lbl: 'gt'
- device: 'cpu'
interface: 'none'
lbl: 'frontier'
exclude:
- device: 'gpu'
interface: 'omp'
lbl: 'frontier'
runs-on:
group: phoenix
labels: ${{ matrix.lbl }}
Expand All @@ -111,23 +123,23 @@ jobs:

- name: Build & Test
if: matrix.lbl == 'gt'
run: bash .github/workflows/phoenix/submit.sh .github/workflows/phoenix/test.sh ${{ matrix.device }}
run: bash .github/workflows/phoenix/submit.sh .github/workflows/phoenix/test.sh ${{ matrix.device }} ${{ matrix.interface }}

- name: Build
if: matrix.lbl == 'frontier'
run: bash .github/workflows/frontier/build.sh ${{ matrix.device }}
run: bash .github/workflows/frontier/build.sh ${{ matrix.device }} ${{ matrix.interface }}

- name: Test
if: matrix.lbl == 'frontier'
run: bash .github/workflows/frontier/submit.sh .github/workflows/frontier/test.sh ${{matrix.device}}
run: bash .github/workflows/frontier/submit.sh .github/workflows/frontier/test.sh ${{matrix.device}} ${{ matrix.interface }}

- name: Print Logs
if: always()
run: cat test-${{ matrix.device }}.out
run: cat test-${{ matrix.device }}-${{ matrix.interface }}.out

- name: Archive Logs
uses: actions/upload-artifact@v4
if: matrix.lbl == 'frontier'
with:
name: logs-${{ strategy.job-index }}-${{ matrix.device }}
path: test-${{ matrix.device }}.out
name: logs-${{ strategy.job-index }}-${{ matrix.device }}-${{ matrix.interface }}
path: test-${{ matrix.device }}-${{ matrix.interface }}.out
Loading
Loading