Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FINAL eamxx downstream merge! #6761

Merged
merged 180 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
664c784
Initial step. Get it building with latest rrtmgp subm
jgfouca Oct 7, 2024
4e2dd44
Fixes for sw
jgfouca Oct 23, 2024
a9c40fd
rrtmgp_lw no allocations
jgfouca Oct 7, 2024
1a701dd
Final pool allocs
jgfouca Oct 23, 2024
7842238
Fix unit test
jgfouca Oct 23, 2024
ea0a364
Merge remote-tracking branch 'origin/master' into jgfouca/rrtmgp_inte…
jgfouca Oct 23, 2024
afbefb4
Something went wrong with merge
jgfouca Oct 23, 2024
461066e
Fix some pool issues
jgfouca Oct 24, 2024
8ee29b5
alloc and init everything
jgfouca Oct 24, 2024
360692f
Way more pool mem was being allocated than was needed
jgfouca Oct 25, 2024
1634f02
Moved base_ref in the wrong direction
jgfouca Oct 25, 2024
0e5ef84
Refactor cmake
jgfouca Oct 31, 2024
48ea3a9
progress
jgfouca Oct 31, 2024
7f9aaac
Transition to object complete
jgfouca Oct 31, 2024
4d404f9
rain_sed working
jgfouca Oct 31, 2024
f669e8b
Upwind working
jgfouca Nov 1, 2024
cda50ba
p3_unit_tests and macro cleanup
jgfouca Nov 1, 2024
c3560ef
p3_cloud_water_autoconversion_test
jgfouca Nov 1, 2024
cd28419
p3_back_to_cell_average was not following the standard pattern
jgfouca Nov 1, 2024
a287040
p3_back_to_cell_average
jgfouca Nov 1, 2024
eae74a8
Two more easy ones
jgfouca Nov 1, 2024
ac5851d
Four more
jgfouca Nov 1, 2024
3a64d91
get_latent_heat is not being used on the cxx side
jgfouca Nov 1, 2024
dd7f453
More
jgfouca Nov 1, 2024
343c6d6
More
jgfouca Nov 1, 2024
8590674
Rename the LEV scream tag from 'Lev' to 'altitude' in the source grid…
odiazib Nov 4, 2024
f1c9a39
Removing unnecessary if statement.
odiazib Nov 4, 2024
e166eaa
All bfb unit tests complete
jgfouca Nov 4, 2024
23fd730
Fix bug by using target grid instead of source grid.
odiazib Nov 4, 2024
f72cc87
Add ilev as a default output in all EAMxx output streams
AaronDonahue Nov 4, 2024
a2b0af0
p3_run_and_cmp fixed up
jgfouca Nov 4, 2024
5e46e33
Progress. Can not remove fortran
jgfouca Nov 4, 2024
58b70ac
Remove most of the f90 bridges
jgfouca Nov 4, 2024
576d7b4
Rename FortranData
jgfouca Nov 4, 2024
96f5a28
fix typo in new changes
AaronDonahue Nov 4, 2024
312ee63
reorg
jgfouca Nov 5, 2024
3c2c875
More reorg
jgfouca Nov 5, 2024
6caafa3
Fix typo
jgfouca Nov 5, 2024
8f96dfe
ci(Mergify): configuration update
bartgol Nov 5, 2024
6f30ec5
Mergify: fix syntax
bartgol Nov 7, 2024
e0a1f20
Remove overload of create_tracer_data_reader. Pass tracer file type t…
odiazib Nov 7, 2024
deb0ceb
Workflows: nano-fixes to eamxx workflows
bartgol Nov 7, 2024
5b14f5b
Merge pull request #3099 from E3SM-Project/mergify/bartgol/config-update
bartgol Nov 7, 2024
776a79a
Update .mergify.yml
bartgol Nov 7, 2024
2b6fd04
pre sed
jgfouca Nov 7, 2024
68edf0c
seds
jgfouca Nov 7, 2024
037d5af
seds
jgfouca Nov 7, 2024
abf91a6
Fix bug
jgfouca Nov 7, 2024
23dbd2e
Minor fixes
jgfouca Nov 7, 2024
03630d3
Another minor fix
jgfouca Nov 8, 2024
59a42d3
Merge pull request #3102 from E3SM-Project/bartgol/workflows/fix-eamx…
bartgol Nov 8, 2024
a178078
EAMxx: fix query-scream util script
bartgol Nov 8, 2024
a37c4e8
Merge pull request #3103 from E3SM-Project/bartgol/eamxx/query-scream…
bartgol Nov 8, 2024
579850c
Update .mergify.yml
bartgol Nov 8, 2024
fefea96
Update ekat submodule
bartgol Nov 8, 2024
acd26a1
EAMxx: adapt to changes in ekat's catch main logic
bartgol Nov 8, 2024
fa86f7a
EAMxx: Adds a SMS ne30 test that uses ne4 emission file
singhbalwinder Nov 9, 2024
9f6e83e
EAMxx:Modified folder name nad uses alias for atmchange
singhbalwinder Nov 9, 2024
c07bc72
EAMxx:Adds an alias and upload the mapping file ne4->ne30
singhbalwinder Nov 10, 2024
e3f6717
EAMxx: Adds remap test to nightlies
singhbalwinder Nov 10, 2024
2508f47
EAMxx: Removes init file from mam4xx test as it is now picked automat…
singhbalwinder Nov 10, 2024
806a6f1
EAMxx: Fix a comment in the shell script
singhbalwinder Nov 10, 2024
9788c57
EAMxx: Fixes a comment in the microphysics testmod file
singhbalwinder Nov 10, 2024
97b2dd7
EAMxx: Fixes a comment in the newly added test
singhbalwinder Nov 10, 2024
e95224e
Workflows: fix logic to execute/skip eamxx testing workflows
bartgol Nov 11, 2024
37ae73a
EMAxx - Update comment in enum TracerFileType to avoid confusion.
odiazib Nov 11, 2024
81507d1
Merge pull request #3104 from E3SM-Project/bartgol/ekat-update-20241108
jgfouca Nov 11, 2024
bf6aeb7
Merge remote-tracking branch 'origin/master' into jgfouca/bfb_unit_no…
jgfouca Nov 11, 2024
e779856
Update based on better ekat flag handling
jgfouca Nov 11, 2024
1062373
Expose EAMxx to the git-version hash saved in the component cpl.
AaronDonahue Nov 5, 2024
342958c
EAMxx - Rename enum VERT_EMISSION to ELEVATED_EMISSIONS.
odiazib Nov 11, 2024
3eb6d04
EAMxx - Rename variables: 'elevated_' prefix replaces 'vert_'.
odiazib Nov 11, 2024
a596e6b
EAMxx - Rename tag names: 'elevated' replaces 'verti'
odiazib Nov 11, 2024
589742d
EAMxx - Replace 'verti' with 'elevated' in tag names; add missing lines.
odiazib Nov 11, 2024
3ac38e0
Merge remote-tracking branch 'origin/master' into aarondonahue/io/add…
AaronDonahue Nov 11, 2024
c43116b
This commit fixes a bug in defining an int layout for hyai and hybi
AaronDonahue Nov 11, 2024
4afd0af
Merge pull request #3095 from eagles-project/oscar/ne120-mam-microphy…
bartgol Nov 12, 2024
a1705dd
Update .mergify.yml
bartgol Nov 12, 2024
0939ad3
Mergify: enable pull request automerge
bartgol Nov 12, 2024
aca29bc
Merge pull request #3091 from E3SM-Project/aarondonahue/io/add_ilev_t…
AaronDonahue Nov 12, 2024
12ed756
Merge pull request #3096 from E3SM-Project/jgfouca/bfb_unit_no_f90
jgfouca Nov 12, 2024
035d8c2
Mergify: set commit message for automerge
bartgol Nov 12, 2024
b4e18d2
Mergify: remove redundant merge protection condition in automerge rule
bartgol Nov 12, 2024
230167c
Merge pull request #3106 from E3SM-Project/bartgol/workflows/fix-eamx…
bartgol Nov 12, 2024
2bb921e
Quick fix for baseline generation
jgfouca Nov 13, 2024
efde774
Merge pull request #3107 from E3SM-Project/jgfouca/quick_fix_baseline…
jgfouca Nov 13, 2024
5dc66fc
Fixup small kernel situation
jgfouca Nov 13, 2024
6318f41
Mergify: fix merge proteciton rule
bartgol Nov 13, 2024
dfbfcfd
make latitude absolute value in the relative checking to make it comp…
Nov 13, 2024
db5b35d
Mergify: fix merge proteciton rule
bartgol Nov 13, 2024
fd23d1f
Merge branch 'master' into bogensch/dpxx_latfix
bogensch Nov 13, 2024
b7211bd
add option to prescribe an invariant solar constant
Nov 13, 2024
50815e2
move placement of line where fixed solar irradiance is defined
Nov 14, 2024
224e637
Merge pull request #3110 from E3SM-Project/jgfouca/fix_small_kernels
bartgol Nov 14, 2024
8e72936
EAMxx: Interface for reading file and setting index_season_lai
odiazib Nov 12, 2024
79cb356
Use host version for find_season_index and add function description
odiazib Nov 13, 2024
a97a773
EAMxx: Obtain season_wes_file from input file and use MAM4xx main branch
odiazib Nov 13, 2024
1f9563a
EAMxx: apply clang format to find_season_index_utils.hpp.
odiazib Nov 13, 2024
0d1fdc3
EAMxx: Obtain season_wes.nc file.
odiazib Nov 13, 2024
9fbdbb3
EAMxx: remove unused code.
odiazib Nov 13, 2024
a9850ad
Fixes for p3 tests CMake settings
jgfouca Nov 14, 2024
d86865e
Fix threads arg
jgfouca Nov 14, 2024
90ef094
Merge pull request #3114 from E3SM-Project/jgfouca/p3_cmake_fixes
jgfouca Nov 14, 2024
3c07f42
Merge remote-tracking branch 'origin/master' into jgfouca/rrtmgp_inte…
jgfouca Nov 14, 2024
6ce5b69
Turn YAKL back on by default for now
jgfouca Nov 14, 2024
d93e637
Merge remote-tracking branch 'upstream/master' into jgfouca/upstream_…
jgfouca Nov 14, 2024
f837023
Remove some debugging stuff
jgfouca Nov 14, 2024
03ab712
typo in links in eamxx docs
mahf708 Nov 14, 2024
746c90c
Merge pull request #3115 from jgfouca/upstream_merge_2024_11_14
mergify[bot] Nov 15, 2024
2354936
EAMxx: change ghci-snl-cuda specs
bartgol Nov 14, 2024
93a99aa
Workflows: get Cuda arch from nvidia-smi in eamxx-sa-XYZ.yml
bartgol Nov 14, 2024
4625182
Workflows: fetch changed files in chunks
bartgol Nov 15, 2024
0f2c4ba
Workflows: fix job name
bartgol Nov 15, 2024
b6b9007
Merge pull request #3116 from E3SM-Project/bartgol/eamxx/ghci-snl-cud…
bartgol Nov 15, 2024
bc5e39b
Merge pull request #3030 from E3SM-Project/jgfouca/rrtmgp_interface_b…
jgfouca Nov 15, 2024
49d89f9
Workflows: fix detection of CUDA arch in eamxx-sa workflows
bartgol Nov 15, 2024
b2e02ea
Workflows: allow to force cdash submission via workflow_dispatch for …
bartgol Nov 15, 2024
3f99ea0
Merge pull request #3094 from E3SM-Project/aarondonahue/IO/add_githas…
AaronDonahue Nov 15, 2024
37dea04
Merge pull request #3108 from eagles-project/oscar/find_season_index
jgfouca Nov 15, 2024
9673d6b
emissions interface--running and calling mam4xx. next diagnose error
mjs271 Sep 10, 2024
c3f2ebf
cleanup to fix warnings and change path to emissions input files
mjs271 Oct 9, 2024
749f207
got online emis. interface working
mjs271 Oct 15, 2024
484d2c1
online emissions interface appears to be working
mjs271 Oct 16, 2024
829c560
bump mam4xx submodule, add comments to srf_online_emis_interface
mjs271 Oct 16, 2024
b2dbb85
update mam4xx to main
mjs271 Oct 17, 2024
24d3e11
comment out error-inducing code in mam4_amicphys.cpp and small reorg …
mjs271 Oct 21, 2024
405ce81
Adds sst variable from the ocean model in EAMxx via coupler
singhbalwinder Oct 26, 2024
e38b45b
Adds dstfluxes (4 values per col) from coupler to eamxx
singhbalwinder Oct 26, 2024
13f6cfc
Adds all input variables for online emissions into the interface cpp
singhbalwinder Oct 28, 2024
52afd72
Commits changes in submodule MAM4xx
singhbalwinder Oct 28, 2024
16a1217
EAMxx:Adds soil erodibility file read and sent to online emission read
singhbalwinder Oct 29, 2024
52f32c0
Changes needed to start validatioon with EAM
singhbalwinder Oct 29, 2024
dd258df
EAMxx: dust emissions matches EAMvs grdi cell
singhbalwinder Oct 30, 2024
9e0ad96
EAMxx:calculate_seasalt_numflux_in_bins validated
singhbalwinder Oct 30, 2024
a7d47e9
EAMxx: marine_organic_emis validated with hardwired file read mom
singhbalwinder Oct 30, 2024
0594667
EAMxx: Partial implementation of marine orgaics file read
singhbalwinder Oct 31, 2024
2f0d6c8
EAMxx:Reading and interpolation of mariane organic file works, not te…
singhbalwinder Oct 31, 2024
82e843b
EAMxx: Connects marine organics emiss with MAM4xx codes
singhbalwinder Oct 31, 2024
5d8341f
EAMxx:Fixes units for marine organic emissions
singhbalwinder Oct 31, 2024
c681f07
EAMxx: Adds logic to zero out constituent fluxes, cleanup
singhbalwinder Oct 31, 2024
a150d9d
EAMxx: Reverts input yaml and CMake, changes cons fluxes to updated
singhbalwinder Oct 31, 2024
f0a33da
EAMxx: Some fixes after rebase
singhbalwinder Oct 31, 2024
80a57f0
EAMxx:Adds loop to update file read for marine organics, cleanup
singhbalwinder Oct 31, 2024
15f44fd
fixup! EAMxx: Some fixes after rebase
mjs271 Oct 31, 2024
bdd475f
EAMxx:Fixes file path and specify vector components for dust flux
singhbalwinder Nov 1, 2024
4e120c7
EAMxx: MAM4xx submodule pointing to main that include GPU fixes
singhbalwinder Nov 4, 2024
7b8f7fd
EAMxx: Some codes re-arranged after rebase
singhbalwinder Nov 4, 2024
4195b41
EAMxx:Removes accidently added file
singhbalwinder Nov 4, 2024
e715b8b
update mam4xx submodule to fix gpu compilation error
mjs271 Nov 5, 2024
cc63e5d
EAMxx: Fixes a gpu bug requiring a particular format for dstflx
singhbalwinder Nov 5, 2024
40a6190
EAMxx: Clang format
singhbalwinder Nov 5, 2024
f3a29b1
EAMxx: Fixed some comments paths and other minor cleanup
singhbalwinder Nov 5, 2024
8d4ca76
EAMxx: Moves online emiss and constituent init to a new function hpp …
singhbalwinder Nov 5, 2024
a20712c
fix cuda compile warnings
mjs271 Nov 5, 2024
a40341e
EAMxx:Inits constituent fluxes to zero
singhbalwinder Nov 13, 2024
df4f13c
Revert "EAMxx: Clang format"
mjs271 Nov 15, 2024
60a90e9
ff mam4xx to current main
mjs271 Nov 15, 2024
c8c4d65
EAMxx: Remove all diffs from microphysics cpp file
singhbalwinder Nov 15, 2024
ed62e69
Merge pull request #3117 from E3SM-Project/bartgol/workflows/fix-pre-…
bartgol Nov 16, 2024
e02b76c
EAMxx: Adds missing namelist entries for multi process test
singhbalwinder Nov 16, 2024
71e4bc5
EAMxx: Moves fences into the interface and remove extra comments
singhbalwinder Nov 16, 2024
b9333f5
Bump DavidAnson/markdownlint-cli2-action from 17 to 18
dependabot[bot] Nov 18, 2024
e98c12b
Merge pull request #3118 from dependabot/github_actions/DavidAnson/ma…
mergify[bot] Nov 18, 2024
0af3b66
Merge pull request #3083 from E3SM-Project/mjs/eamxx/aero_emis_interface
bartgol Nov 19, 2024
d0f2a50
EAMxx: Modify microphysics interface to include sethet (washout rate…
odiazib Nov 19, 2024
00d55a0
EAMxx: Update mam4xx submodule to fix CUDA test.
odiazib Nov 19, 2024
2b50dbb
Add standard name metadata to most EAMxx output variables
AaronDonahue Nov 8, 2024
d44a616
fix standard names for low/med/hgh cloud area fraction types
AaronDonahue Nov 12, 2024
0bc4a10
Merge remote-tracking branch 'origin' into bogensch/dpxx_latfix
Nov 19, 2024
86abc7a
Merge remote-tracking branch 'origin' into bogensch/add_fixed_solar_c…
Nov 19, 2024
af3343b
EAMxx: Add aerosols and gases outputs to ensure the microscopy baseli…
odiazib Nov 20, 2024
f7a7ad6
Merge pull request #3120 from eagles-project/oscar/sethet_interface
jgfouca Nov 20, 2024
69a3d39
Merge pull request #3112 from bogensch/add_fixed_solar_constant
mergify[bot] Nov 20, 2024
35c97e8
Merge pull request #3111 from bogensch/dpxx_latfix
mergify[bot] Nov 20, 2024
c98f074
Merge pull request #3105 from aarondonahue/io/add_standard_name_metadata
mergify[bot] Nov 20, 2024
1df5b17
Mergify: dismiss reviews when new commits are pushed
bartgol Nov 20, 2024
767c2a0
Merge pull request #3122 from E3SM-Project/bartgol/fix-mergify
bartgol Nov 20, 2024
28474c3
Merge remote-tracking branch 'scream/master' into jgfouca/final_screa…
jgfouca Nov 21, 2024
0d3b7da
Workflows: simplified and fixed eamxx workflow files
bartgol Nov 22, 2024
febfb90
update pam to conform to new eamxx p3
mahf708 Nov 22, 2024
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
2 changes: 1 addition & 1 deletion .github/workflows/e3sm-gh-md-linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
with:
files: '**/*.md'
separator: ","
- uses: DavidAnson/markdownlint-cli2-action@v17
- uses: DavidAnson/markdownlint-cli2-action@v18
if: steps.changed-files.outputs.any_changed == 'true'
with:
config: 'docs/.markdownlint.json'
Expand Down
39 changes: 37 additions & 2 deletions .github/workflows/eamxx-sa-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: eamxx-sa-coverage

on:
workflow_dispatch:
inputs:
submit:
description: 'Force cdash submission'
required: true
type: boolean

# Add schedule trigger for nightly runs at midnight MT (Standard Time)
schedule:
Expand All @@ -13,7 +18,8 @@ concurrency:
cancel-in-progress: true

env:
submit: ${{ github.event_name == 'schedule' && 'true' || 'false' }} # Submit to cdash only for nightlies
# Submit to cdash only for nightlies or if the user explicitly forced a submission via workflow dispatch
submit: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.submit) }}

jobs:
gcc-openmp:
Expand Down Expand Up @@ -48,11 +54,40 @@ jobs:
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Get CUDA Arch
run: |
# Ensure nvidia-smi is available
if ! command -v nvidia-smi &> /dev/null; then
echo "nvidia-smi could not be found. Please ensure you have Nvidia drivers installed."
exit 1
fi

# Get the GPU model from nvidia-smi, and set env for next step
gpu_model=$(nvidia-smi --query-gpu=name --format=csv,noheader | head -n 1)
case "$gpu_model" in
*"H100"*)
echo "Hopper=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=90" >> $GITHUB_ENV
ARCH=90
;;
*"A100"*)
echo "Ampere=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=80" >> $GITHUB_ENV
;;
*"V100"*)
echo "Volta=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=70" >> $GITHUB_ENV
;;
*)
echo "Unsupported GPU model: $gpu_model"
exit 1
;;
esac
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
build_type: cov
machine: ghci-snl-cuda
generate: false
submit: ${{ env.submit }}
cmake-configs: Kokkos_ARCH_VOLTA70=ON;CMAKE_CUDA_ARCHITECTURES=70
cmake-configs: Kokkos_ARCH_HOPPER90=${{ env.Hopper }};Kokkos_ARCH_AMPERE80=${{ env.Ampere }};Kokkos_ARCH_VOLTA70=${{ env.Volta }};CMAKE_CUDA_ARCHITECTURES=${{ env.CUDA_ARCH }}
41 changes: 38 additions & 3 deletions .github/workflows/eamxx-sa-sanitizer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: eamxx-sa-sanitizer

on:
workflow_dispatch:
inputs:
submit:
description: 'Force cdash submission'
required: true
type: boolean

# Add schedule trigger for nightly runs at midnight MT (Standard Time)
schedule:
Expand All @@ -13,12 +18,13 @@ concurrency:
cancel-in-progress: true

env:
submit: ${{ github.event_name == 'schedule' && 'true' || 'false' }} # Submit to cdash only for nightlies
# Submit to cdash only for nightlies or if the user explicitly forced a submission via workflow dispatch
submit: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.submit) }}

jobs:
gcc-openmp:
runs-on: [self-hosted, ghci-snl-cpu, gcc]
name: gcc-openmp / cov
name: gcc-openmp / valg
steps:
- name: Check out the repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -52,11 +58,40 @@ jobs:
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Get CUDA Arch
run: |
# Ensure nvidia-smi is available
if ! command -v nvidia-smi &> /dev/null; then
echo "nvidia-smi could not be found. Please ensure you have Nvidia drivers installed."
exit 1
fi

# Get the GPU model from nvidia-smi, and set env for next step
gpu_model=$(nvidia-smi --query-gpu=name --format=csv,noheader | head -n 1)
case "$gpu_model" in
*"H100"*)
echo "Hopper=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=90" >> $GITHUB_ENV
ARCH=90
;;
*"A100"*)
echo "Ampere=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=80" >> $GITHUB_ENV
;;
*"V100"*)
echo "Volta=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=70" >> $GITHUB_ENV
;;
*)
echo "Unsupported GPU model: $gpu_model"
exit 1
;;
esac
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
build_type: ${{ matrix.build_type }}
machine: ghci-snl-cuda
generate: false
submit: ${{ env.submit }}
cmake-configs: Kokkos_ARCH_VOLTA70=ON;CMAKE_CUDA_ARCHITECTURES=70
cmake-configs: Kokkos_ARCH_HOPPER90=${{ env.Hopper }};Kokkos_ARCH_AMPERE80=${{ env.Ampere }};Kokkos_ARCH_VOLTA70=${{ env.Volta }};CMAKE_CUDA_ARCHITECTURES=${{ env.CUDA_ARCH }}
145 changes: 60 additions & 85 deletions .github/workflows/eamxx-sa-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ on:
pull_request:
branches: [ master ]
types: [opened, synchronize, ready_for_review, reopened]
paths:
# first, yes to these
- '.github/workflows/eamxx-sa-testing.yml'
- 'cime_config/machine/config_machines.xml'
- 'components/eamxx/**'
- 'components/homme/**'
- 'externals/ekat'
- 'externals/scorpio'
# second, no to these
- '!components/eamxx/docs/**'
- '!components/eamxx/mkdocs.yml'

# Manual run is used to bless
workflow_dispatch:
Expand All @@ -21,6 +32,10 @@ on:
description: 'Generate baselines'
required: true
type: boolean
submit:
description: 'Force cdash submission'
required: true
type: boolean

# Add schedule trigger for nightly runs at midnight MT (Standard Time)
schedule:
Expand All @@ -34,66 +49,20 @@ concurrency:
cancel-in-progress: true

env:
submit: ${{ github.event_name == 'schedule' && 'true' || 'false' }} # Submit to cdash only for nightlies
# Submit to cdash only for nightlies or if the user explicitly forced a submission via workflow dispatch
submit: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.submit) }}
generate: ${{ github.event_name == 'workflow_dispatch' && inputs.bless }}

jobs:
pre_process_pr:
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest # This job can run anywhere
outputs:
relevant_paths: ${{ steps.check_paths.outputs.value }}
labels: ${{ steps.get_labels.outputs.labels }}
steps:
- id: check_paths
run: |
paths=(
components/eamxx
components/eam/src/physics/rrtmgp
components/eam/src/physics/p3/scream
components/eam/src/physics/cam
components/eam/src/physics/rrtmgp/external
externals/ekat
externals/scorpio
externals/haero
externals/YAKL
.github/workflows/eamxx-sa-testing.yml
)
pattern=$(IFS=\|; echo "${paths[*]}")

# Use the GitHub API to get the list of changed files
response=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.number }}/files")
changed_files=$(echo "$response" | grep -o '"filename": *"[^"]*"' | sed 's/"filename": *//; s/"//g')

# Check for matches and echo the matching files (or "" if none)
matching_files=$(echo "$changed_files" | grep -E "^($pattern)" || echo "")
if [[ -n "$matching_files" ]]; then
echo "Found relevant files: $matching_files"
echo "value=true" >> $GITHUB_OUTPUT
else
echo "No relevant files touched by this PR."
echo "value=false" >> $GITHUB_OUTPUT
fi
- id: get_labels
run: |
labels="${{ join(github.event.pull_request.labels.*.name, ',') }}"
echo "labels=${labels}" >> $GITHUB_OUTPUT
gcc-openmp:
needs: [pre_process_pr]
if: |
github.event_name == 'schedule' ||
(
github.event_name == 'pull_request' &&
needs.pre_process_pr.outputs.relevant_paths=='true' &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip gcc') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip openmp') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip eamxx-sa') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip eamxx-all')
) || (
github.event_name == 'workflow_dispatch' &&
github.event.inputs.job_to_run == 'gcc-openmp' ||
github.event.inputs.job_to_run == 'all'
)
${{
github.event_name != 'workflow_dispatch' ||
(
github.event.inputs.job_to_run == 'gcc-openmp' ||
github.event.inputs.job_to_run == 'all'
)
}}
runs-on: [self-hosted, ghci-snl-cpu, gcc]
strategy:
fail-fast: false
Expand All @@ -109,14 +78,6 @@ jobs:
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Set test-all inputs based on event specs
run: |
echo "generate=false" >> $GITHUB_ENV
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
if [ "${{ inputs.bless }}" == "true" ]; then
echo "generate=true" >> $GITHUB_ENV
fi
fi
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
Expand All @@ -126,21 +87,14 @@ jobs:
submit: ${{ env.submit }}
cmake-configs: Kokkos_ENABLE_OPENMP=ON
gcc-cuda:
needs: [pre_process_pr]
if: |
github.event_name == 'schedule' ||
(
github.event_name == 'pull_request' &&
needs.pre_process_pr.outputs.relevant_paths=='true' &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip gcc') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip cuda') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip eamxx-sa') &&
!contains(needs.pre_process_pr.outputs.labels,'CI: skip eamxx-all')
) || (
github.event_name == 'workflow_dispatch' &&
github.event.inputs.job_to_run == 'gcc-cuda' ||
github.event.inputs.job_to_run == 'all'
)
${{
github.event_name != 'workflow_dispatch' ||
(
github.event.inputs.job_to_run == 'gcc-cuda' ||
github.event.inputs.job_to_run == 'all'
)
}}
runs-on: [self-hosted, ghci-snl-cuda, cuda, gcc]
strategy:
fail-fast: false
Expand All @@ -156,19 +110,40 @@ jobs:
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Set test-all inputs based on event specs
- name: Get CUDA Arch
run: |
echo "generate=false" >> $GITHUB_ENV
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
if [ "${{ inputs.bless }}" == "true" ]; then
echo "generate=true" >> $GITHUB_ENV
fi
# Ensure nvidia-smi is available
if ! command -v nvidia-smi &> /dev/null; then
echo "nvidia-smi could not be found. Please ensure you have Nvidia drivers installed."
exit 1
fi

# Get the GPU model from nvidia-smi, and set env for next step
gpu_model=$(nvidia-smi --query-gpu=name --format=csv,noheader | head -n 1)
case "$gpu_model" in
*"H100"*)
echo "Hopper=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=90" >> $GITHUB_ENV
ARCH=90
;;
*"A100"*)
echo "Ampere=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=80" >> $GITHUB_ENV
;;
*"V100"*)
echo "Volta=ON" >> $GITHUB_ENV
echo "CUDA_ARCH=70" >> $GITHUB_ENV
;;
*)
echo "Unsupported GPU model: $gpu_model"
exit 1
;;
esac
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
build_type: ${{ matrix.build_type }}
machine: ghci-snl-cuda
generate: ${{ env.generate }}
submit: ${{ env.submit }}
cmake-configs: Kokkos_ARCH_VOLTA70=ON;CMAKE_CUDA_ARCHITECTURES=70
cmake-configs: Kokkos_ARCH_HOPPER90=${{ env.Hopper }};Kokkos_ARCH_AMPERE80=${{ env.Ampere }};Kokkos_ARCH_VOLTA70=${{ env.Volta }};CMAKE_CUDA_ARCHITECTURES=${{ env.CUDA_ARCH }}
Loading
Loading