3939 FIREDRAKE_CI : 1
4040 PYOP2_CI_TESTS : 1
4141 PYOP2_SPMD_STRICT : 1
42- EXTRA_PYTEST_ARGS : --splitting-algorithm least_duration --timeout=600 --timeout-method=thread -o faulthandler_timeout=660 firedrake-repo/tests/firedrake
42+ EXTRA_PYTEST_ARGS : --splitting-algorithm least_duration --timeout=600 --timeout-method=thread -o faulthandler_timeout=660
43+ PYTEST_MPI_MAX_NPROCS : 8
4344 steps :
4445 - name : Fix HOME
4546 # For unknown reasons GitHub actions overwrite HOME to /github/home
6869 cd petsc
6970 python3 ../firedrake-repo/scripts/firedrake-configure \
7071 --arch ${{ matrix.arch }} --show-petsc-configure-options | \
71- xargs -L1 ./configure --with-make-np=12 --download-slepc
72+ xargs -L1 ./configure --with-make-np=8 --download-slepc
7273 make PETSC_DIR=/__w/firedrake/firedrake/petsc PETSC_ARCH=arch-firedrake-${{ matrix.arch }}
7374 make check
7475 echo "PETSC_DIR=/__w/firedrake/firedrake/petsc" >> "$GITHUB_ENV"
@@ -98,63 +99,85 @@ jobs:
9899 firedrake-check
99100 timeout-minutes : 5
100101
101- - name : Run tests (nprocs = 1)
102+ - name : Run TSFC tests
102103 # Run even if earlier tests failed
103- if : ${{ success() || steps.install.conclusion == 'success' }}
104+ if : success() || steps.install.conclusion == 'success'
105+ run : |
106+ . venv/bin/activate
107+ : # Use pytest-xdist here so we can have a single collated output (not possible
108+ : # for parallel tests)
109+ firedrake-run-split-tests 1 1 -n 8 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/tsfc
110+ timeout-minutes : 60
111+
112+ - name : Run PyOP2 tests
113+ if : success() || steps.install.conclusion == 'success'
114+ run : |
115+ . venv/bin/activate
116+ : # Use pytest-xdist here so we can have a single collated output (not possible
117+ : # for parallel tests)
118+ firedrake-run-split-tests 1 1 -n 8 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/pyop2
119+ firedrake-run-split-tests 2 4 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/pyop2
120+ firedrake-run-split-tests 3 2 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/pyop2
121+ firedrake-run-split-tests 4 2 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/pyop2
122+ timeout-minutes : 15
123+
124+
125+ - name : Run Firedrake tests (nprocs = 1)
126+ if : success() || steps.install.conclusion == 'success'
104127 run : |
105128 . venv/bin/activate
106129 : # Use pytest-xdist here so we can have a single collated output (not possible
107130 : # for parallel tests)
108- firedrake-run-split-tests 1 1 " -n 12 $EXTRA_PYTEST_ARGS"
131+ firedrake-run-split-tests 1 1 -n 8 " $EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
109132 timeout-minutes : 60
110133
111134 - name : Run tests (nprocs = 2)
112- if : ${{ success() || steps.install.conclusion == 'success' }}
135+ if : success() || steps.install.conclusion == 'success'
113136 run : |
114137 . venv/bin/activate
115- firedrake-run-split-tests 2 6 "$EXTRA_PYTEST_ARGS"
138+ firedrake-run-split-tests 2 4 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
116139 timeout-minutes : 30
117140
118141 - name : Run tests (nprocs = 3)
119- if : ${{ success() || steps.install.conclusion == 'success' }}
142+ if : success() || steps.install.conclusion == 'success'
120143 run : |
121144 . venv/bin/activate
122- firedrake-run-split-tests 3 4 "$EXTRA_PYTEST_ARGS"
145+ firedrake-run-split-tests 3 2 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
123146 timeout-minutes : 60
124147
125148 - name : Run tests (nprocs = 4)
126- if : ${{ success() || steps.install.conclusion == 'success' }}
149+ if : success() || steps.install.conclusion == 'success'
127150 run : |
128151 . venv/bin/activate
129- firedrake-run-split-tests 4 3 "$EXTRA_PYTEST_ARGS"
152+ firedrake-run-split-tests 4 2 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
130153 timeout-minutes : 15
131154
132155 - name : Run tests (nprocs = 5)
133- if : ${{ success() || steps.install.conclusion == 'success' }}
156+ if : success() || steps.install.conclusion == 'success'
134157 run : |
135158 . venv/bin/activate
136- firedrake-run-split-tests 5 2 "$EXTRA_PYTEST_ARGS"
159+ firedrake-run-split-tests 5 1 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
137160 timeout-minutes : 15
138161
139162 - name : Run tests (nprocs = 6)
140- if : ${{ success() || steps.install.conclusion == 'success' }}
163+ if : success() || steps.install.conclusion == 'success'
141164 run : |
142165 . venv/bin/activate
143- firedrake-run-split-tests 6 2 "$EXTRA_PYTEST_ARGS"
166+ firedrake-run-split-tests 6 1 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
144167 timeout-minutes : 15
145168
146169 - name : Run tests (nprocs = 7)
147- if : ${{ success() || steps.install.conclusion == 'success' }}
170+ if : success() || steps.install.conclusion == 'success'
148171 run : |
149172 . venv/bin/activate
150- firedrake-run-split-tests 7 1 "$EXTRA_PYTEST_ARGS"
173+ firedrake-run-split-tests 7 1 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
151174 timeout-minutes : 15
152175
153176 - name : Run tests (nprocs = 8)
154- if : ${{ success() || steps.install.conclusion == 'success' }}
177+ if : success() || steps.install.conclusion == 'success'
155178 run : |
156179 . venv/bin/activate
157- firedrake-run-split-tests 8 1 "$EXTRA_PYTEST_ARGS"
180+ firedrake-run-split-tests 8 1 "$EXTRA_PYTEST_ARGS" firedrake-repo/tests/firedrake
158181 timeout-minutes : 15
159182
160183 - name : Run Gusto smoke tests
@@ -164,12 +187,21 @@ jobs:
164187 . venv/bin/activate
165188 git clone --depth 1 https://github.com/firedrakeproject/gusto.git gusto-repo
166189 pip install --verbose ./gusto-repo
167- python -m pytest -n 12 --verbose \
190+ python -m pytest -n 8 --verbose \
168191 gusto-repo/integration-tests/balance/test_saturated_balance.py \
169192 gusto-repo/integration-tests/equations/test_thermal_sw.py \
170193 gusto-repo/integration-tests/transport/test_embedded_dg_advection.py
171194 timeout-minutes : 10
172195
196+ - name : Run Thetis smoke tests
197+ if : (success() || steps.install.conclusion == 'success') && matrix.arch == 'default'
198+ run : |
199+ . venv/bin/activate
200+ git clone --depth 1 https://github.com/thetisproject/thetis.git thetis-repo
201+ pip install --verbose ./thetis-repo
202+ python -m pytest -n 8 --verbose thetis-repo/test_adjoint/test_swe_adjoint.py
203+ timeout-minutes : 10
204+
173205 - name : Run spyro smoke tests
174206 if : (success() || steps.install.conclusion == 'success') && matrix.arch == 'default'
175207 run : |
@@ -251,7 +283,7 @@ jobs:
251283 - name : Setup Python
252284 uses : actions/setup-python@v5
253285 with :
254- python-version : ' 3.12'
286+ python-version : " 3.12"
255287 - name : Install deps
256288 run : pip install requests packaging
257289 - name : Zenodo API canary
@@ -260,5 +292,5 @@ jobs:
260292 uses : actions/upload-artifact@v4
261293 if : failure()
262294 with :
263- name : " zenodo-canary"
295+ name : zenodo-canary
264296 path : firedrake-install.log
0 commit comments