-
Notifications
You must be signed in to change notification settings - Fork 160
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
Test suite clean up #3385
base: master
Are you sure you want to change the base?
Test suite clean up #3385
Conversation
|
ecb9628
to
f3685b7
Compare
f3685b7
to
f848c6f
Compare
93a0aae
to
a20fc9d
Compare
a5f614f
to
27b9af3
Compare
2a7f468
to
6ed1774
Compare
8132b64
to
1122a3b
Compare
9d5f056
to
df4aea3
Compare
|
|
bf317f5
to
ef87021
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally very happy with this.
8435a69
to
10f7f0c
Compare
10f7f0c
to
f493334
Compare
python "$(which firedrake-clean)" | ||
python -m pip install \ | ||
pytest-xdist pytest-timeout ipympl | ||
pytest-xdist pytest-timeout ipympl pytest-split | ||
pip install git+https://github.com/JDBetteridge/mpispawn |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before we merge this we should probably put this into the firedrakeproject organisation, or pin to a version or something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving notes for someone (most likely me) to refer to in future. In summary:
- Need to rebase/merge in
master
. - Tweaks to
Makefile
andbuild.yml
.
-o faulthandler_timeout=1860 \ | ||
--junit-xml=firedrake2_\$MPISPAWN_TASK_ID1.xml \ | ||
-m "parallel[\$MPISPAWN_WORLD_SIZE] and not broken" \ | ||
-v tests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: "dogfood" (bleh) Makefile
and use a matrix to massively cut down on boilerplate
.PHONY: test_smoke | ||
test_smoke: | ||
@echo " Running the bare minimum smoke tests" | ||
@python -m pytest -k "poisson_strong or stokes_mini or dg_advection" -v tests/regression/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be better to use MPI on the "outside" here for the parallel tests so this can be run to check things on HPC
endif | ||
# Requires pytest and pytest-mpi only | ||
.PHONY: test_serial | ||
test_serial: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Terrible name! This runs all the parallel tests too!
|
||
# Requires pytest and pytest-mpi only | ||
.PHONY: test_smoke | ||
test_smoke: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bikeshedding: I prefer make smoke_tests
or make smoketests
done | ||
|
||
.PHONY: _test_large_world_test | ||
_test_large_world_tests: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure why we have small_world
and large_world
tests separately.
@@ -159,7 +159,11 @@ def collect_tsfc_kernel_data(self, mesh, tsfc_coefficients, tsfc_constants, wrap | |||
|
|||
# Pick the constants associated with a Tensor()/TSFC kernel | |||
tsfc_constants = tuple(tsfc_constants[i] for i in kinfo.constant_numbers) | |||
kernel_data.extend([(c, c.name) for c in wrapper_constants if c in tsfc_constants]) | |||
kernel_data.extend([ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to merge in master as these changes are now merged.
Description
This PR started as an experiment to "cheaply" speed up the test suite by calling
mpiexec
wrappingpytest
, rather than forking a subprocess which callsmpiexec
(which is also problematic for other reasons).This PR now carries around multiple test suite fixes that should be merged back to master and includes fixes including:
Ensemble
needs a proper fix!)We need to consider what aspects of this experiment we want to incorporate back into master.
Some timings for the actual speed-up (the original intention):
Results
(Real only)
Master
This week's scheduled execution:
This branch
With fixed caches, mpispawn, fixed FInAT hashes and pytest-split based on a timed execution.
NB: We tweak
vertexonly/test_poisson_inverse_conductivity.py
to only do 3 iterations (see diff)Important, this branch only runs a maximum of 12 ranks/threads!