-
Notifications
You must be signed in to change notification settings - Fork 24
130 lines (109 loc) · 4.2 KB
/
Copy pathmhd.yml
File metadata and controls
130 lines (109 loc) · 4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: 🧲 MHD-WaveTests
on:
push:
branches: [ development ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ development ]
merge_group:
branches: [ development ]
concurrency:
group: ${{ github.ref }}-${{ github.head_ref }}-mhd-wave-tests
cancel-in-progress: true
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
permissions:
contents: read
jobs:
check_changes:
uses: ./.github/workflows/check_changes.yml
with:
workflow_file: '.github/workflows/mhd.yml'
build:
runs-on: ubuntu-latest
needs: check_changes
if: needs.check_changes.outputs.has_non_docs_changes == 'true'
env:
CCACHE_COMPRESS: '1'
CCACHE_COMPRESSLEVEL: '10'
CCACHE_MAXSIZE: 450M
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.2.2
with:
submodules: true
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install gcc g++ python3-dev python3-numpy python3-matplotlib python3-pip libopenmpi-dev libhdf5-mpi-dev
- name: Install ccache
run: .github/workflows/dependencies/dependencies_ccache.sh
- name: Set Up Cache
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ~/.cache/ccache
key: ccache-${{ github.workflow }}-${{ github.job }}-git-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-${{ github.job }}-git-
- name: Install Canary
run: python3 -m pip install canary-wm==25.10.7
- name: Initialize ccache
run: |
ccache --version
ccache -z
- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/build
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DAMReX_SPACEDIM=3 -DENABLE_TESTS_FPE=ON
- name: Get MHD test executables
working-directory: ${{runner.workspace}}/build
shell: bash
run: |
# Find all source CMakeLists.txt files that contain MHD label and extract JOB_NAME
grep -l 'LABELS.*"MHD"' $(find $GITHUB_WORKSPACE/src/problems -name "CMakeLists.txt") | while read file; do
# Extract the JOB_NAME from set(JOB_NAME ...) line
grep "set(JOB_NAME" "$file" | sed 's/.*set(JOB_NAME \(.*\))/\1/' | tr -d ')'
done | sort -u > mhd_executables.txt
echo "MHD test executables to build:"
cat mhd_executables.txt
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Build all MHD test targets
run: |
# Read the executables and build them
TARGETS=$(cat mhd_executables.txt | tr '\n' ' ')
echo "Building targets: $TARGETS"
cmake --build . --config $BUILD_TYPE --parallel 4 --target $TARGETS
- name: Create test output directory
run: cmake -E make_directory $GITHUB_WORKSPACE/tests
- name: Felker-Stone EMF FPE smoke test
working-directory: ${{github.workspace}}/tests
shell: bash
run: |
${{runner.workspace}}/build/src/problems/FastWave/FastWave \
../inputs/FastWave.toml \
amr.max_grid_size_x=32 \
amr.blocking_factor_x=16 \
mhd.emf_compute_scheme=FelkerStone2017 \
amrex.init_snan=1 \
amrex.fpe_trap_invalid=1 \
amrex.fpe_trap_overflow=1 \
amrex.fpe_trap_zero=1 \
max_timesteps=3
- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the MHD tests while skipping the slow HydroWave case
run: canary run --output-on-failure --workers=2 -k 'MHD and not HydroWaveConvergence' .
- name: ccache stats
if: always()
run: |
ccache -s
du -hs ~/.cache/ccache
- name: Upload test output
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: test-results
path: ${{github.workspace}}/tests