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

JDBetteridge/merge pyop2 tsfc #3817

Open
wants to merge 3,982 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3982 commits
Select commit Hold shift + click to select a range
55ad119
Update few things
nbouziani Nov 25, 2021
82f9ac5
Update test + remove @abstractmethod from increment_dat_version
nbouziani Nov 25, 2021
3edaf9a
Merge branch 'DataCarrier-object-versionning' of github.com:OP2/PyOP2…
nbouziani Nov 25, 2021
5fe6451
Major redesign of API
connorjward Jan 25, 2022
686857b
Merge pull request #624 from OP2/connorjward/purge-parloop-data-refs
dham Feb 3, 2022
658abaa
Add disk_cached and cached decorators
connorjward Jan 25, 2022
e3bb5a0
Merge pull request #644 from OP2/cached-decorator
connorjward Feb 4, 2022
8b04898
Fix dtypes for COFFEE local kernel
connorjward Feb 8, 2022
186fac5
Merge pull request #647 from OP2/fix-dtype-bug
connorjward Feb 8, 2022
6827bdb
Uniquify args for halo exchanges
connorjward Feb 8, 2022
13f0d33
Merge pull request #649 from OP2/fix-2341
wence- Feb 9, 2022
462da86
Fix deadlocking disk_cached decorator
connorjward Feb 18, 2022
527fb49
Loopy: Set target globally to CWithGNULibcTarget
sv2518 Mar 2, 2022
ebe8ccb
Merge pull request #656 from OP2/sv/set-targets
sv2518 Mar 4, 2022
b1bf667
Minor fixes
sv2518 Mar 4, 2022
4ba2952
Merge pull request #657 from OP2/sv/fix-print
sv2518 Mar 4, 2022
5fb8559
Merge pull request #650 from OP2/connorjward/fix-deadlocking-decorator
connorjward Mar 22, 2022
2d2c3aa
Add dtype check for parloops
connorjward Mar 28, 2022
5f4c036
JDBetteridge/more compilers (#655)
JDBetteridge Apr 1, 2022
d62a56c
Merge pull request #659 from OP2/connorjward/parloop-dtype-check
dham Apr 6, 2022
4530b0e
Compilation: fix the compiler sniffing for apple.
sv2518 Apr 7, 2022
80715ac
Merge pull request #660 from OP2/sv/fix-compiler-sniff
dham Apr 7, 2022
ee0b56e
Don't just drop C instructions...
sv2518 Jan 18, 2022
0c7a5c8
Logging: add PETSc events into the inverse and solve callables. The m…
sv2518 Feb 4, 2022
a0a2ab2
Logging: Generate events for logging all local kernels/callables in p…
sv2518 Feb 15, 2022
883d037
Fix typo in attribute name for M1 Mac.
dham Apr 8, 2022
fc9c34a
Merge pull request #658 from OP2/sv/profiling-local-kernels-trackevents
dham Apr 8, 2022
0a1e339
pass gcc dir to linker on M1
dham Apr 27, 2022
8697788
Merge pull request #662 from OP2/hardcode_m1_library
dham May 3, 2022
a4887c7
call super's constructor
kaushikcfd May 4, 2022
a33fedf
Merge pull request #663 from OP2/mapper_init_defn
wence- May 5, 2022
f277089
PyOP2 compilation: add a pathway to compile with gcc on Mac.
sv2518 May 6, 2022
ba81ee0
Merge pull request #664 from OP2/sv/mac-gnu
sv2518 Jul 7, 2022
e1f7598
Fix mpicc (#667)
sv2518 Jul 8, 2022
ba8d12c
Merge master
nbouziani Jul 13, 2022
0989f1d
Fix lint
nbouziani Jul 13, 2022
a1d9d9f
Update ci.yml
nbouziani Jul 14, 2022
9eabf60
Add tests for Dat context managers
nbouziani Jul 21, 2022
ff58332
Merge branch 'DataCarrier-object-versionning' of github.com:OP2/PyOP2…
nbouziani Jul 21, 2022
784b217
Merge pull request #579 from OP2/DataCarrier-object-versionning
dham Jul 21, 2022
a2103cf
Increase state counter inside vec_context
nbouziani Jul 24, 2022
e09cd25
Update MixedDat._vec counter via Vec.array
nbouziani Jul 26, 2022
cb3ae29
Clean-up
nbouziani Jul 26, 2022
7036b5d
Merge pull request #670 from OP2/fix-mixed-dat-object-versioning
dham Jul 27, 2022
3a1b62f
Made a mistake in the compiler refactor + New linting rules (#672)
JDBetteridge Aug 11, 2022
473a1d5
Replace OrderedDicts getting passed to loopy
connorjward Aug 19, 2022
0dcf7d6
Enable loopy caching of kernels
connorjward Aug 19, 2022
a0259a9
Merge pull request #673 from OP2/connorjward/enable-loopy-caching
dham Oct 5, 2022
fcf4250
add ComposedMap
ksagiyam Oct 1, 2022
1ba576e
Merge pull request #674 from OP2/ksagiyam/composed_map
ksagiyam Oct 18, 2022
40905e7
Remove distutils from compilation.py
Feb 23, 2022
5218d79
Remove distutils from setup.py
JDBetteridge Mar 3, 2022
e242150
Update versioneer
JDBetteridge Mar 3, 2022
1da42a5
test_requires is deprecated
JDBetteridge Mar 3, 2022
f072341
Updated to latest versioneer (no distutils)
JDBetteridge Nov 4, 2022
189dc4d
Add matrix to CI
JDBetteridge Nov 4, 2022
fd59755
Fail fast false
JDBetteridge Nov 9, 2022
b74ed10
Merge pull request #678 from OP2/JDBetteridge/purge_distutils
dham Nov 9, 2022
382a718
Merge pull request #679 from OP2/JDBetteridge/ci_python_matrix
dham Nov 9, 2022
a959e43
codegen: add Quotient, FloorDiv, Remainder
ksagiyam Oct 11, 2022
e8722fb
extrusion: enable periodic extrusion
ksagiyam Oct 13, 2022
9de5afc
Merge pull request #675 from OP2/ksagiyam/periodic_extrusion
ksagiyam Nov 15, 2022
804b711
Add timeout to CI tests
JDBetteridge Nov 21, 2022
de58f78
Add 60 min job timeout and 10 min pytesttimeout as pytest-timout does…
JDBetteridge Nov 21, 2022
f4a5a17
Test new timeout strategy
JDBetteridge Nov 22, 2022
8f826a2
Try to change the CI environment instead
JDBetteridge Nov 22, 2022
e8be853
Re-enable matrix strategy
JDBetteridge Nov 23, 2022
3a1d876
Merge pull request #682 from OP2/JDBetteridge/add_CI_timeout
JDBetteridge Nov 23, 2022
43c14a6
Add halo freezing
connorjward Nov 16, 2022
c1158ed
Merge pull request #680 from OP2/connorjward/freeze-halos
dham Nov 23, 2022
dac4b97
Add some dummy Dat methods to Global
connorjward Nov 28, 2022
1f0a740
Replaced tompi4py() with proper comm_dup() calls
JDBetteridge Sep 30, 2022
65fd506
WIP: Tests passing, but not all comms freed
JDBetteridge Oct 2, 2022
fb274d2
This test was just wrong
JDBetteridge Oct 11, 2022
35de348
Tests pass with no comms referenced at end
JDBetteridge Oct 13, 2022
51b21f4
Lint code
JDBetteridge Oct 18, 2022
e3454bf
Remove debugging statements
JDBetteridge Oct 18, 2022
b2520ee
Fix up a few more MPI bits
JDBetteridge Oct 20, 2022
07d1dc5
Fix deadlocks in Firedrake tests
JDBetteridge Oct 24, 2022
5c4b242
Comm in composed map was not internal
JDBetteridge Oct 26, 2022
390289f
Remove pyop2.mpi.FriendlyCommNull
JDBetteridge Oct 26, 2022
ff67407
Address reviewer comments
JDBetteridge Oct 27, 2022
5563c85
pyop2_comm_status() now returns a string
JDBetteridge Oct 27, 2022
f01762d
Duplicate COMM_WORLD and COMM_SELF for PyOP2 use (and avoid renaming …
JDBetteridge Oct 27, 2022
235d45b
Fixed some unreachable lines and redundant logic
JDBetteridge Nov 4, 2022
2c6056b
Change debug to print in _free_comms as stream already closed
JDBetteridge Nov 15, 2022
ba86a16
Fixed removing comm from list twice on free
JDBetteridge Nov 18, 2022
4c439ea
Tidy code, address review comments
JDBetteridge Nov 23, 2022
7a3c68f
Merge pull request #685 from OP2/connorjward/extra-global-methods
dham Nov 29, 2022
7aca5e5
Merge pull request #676 from OP2/JDBetteridge/clean_comms
ksagiyam Nov 29, 2022
2c2c419
GCC 9 doesn't emit full version with `dumpfullversion` (#686)
JDBetteridge Jan 25, 2023
3748115
Fix Halo docstrings so Firedrake docs link properly
JDBetteridge Feb 3, 2023
1c6068a
Add comm to Global constructor in dat op
JDBetteridge Feb 14, 2023
233f6dc
Merge pull request #690 from OP2/JDBetteridge/global_fix
JDBetteridge Feb 14, 2023
7c9fdf3
Prevent freeing comms when refcount=0. Deadlock caused by garbage col…
JDBetteridge Mar 15, 2023
366a8c7
Merge pull request #692 from OP2/JDBetteridge/delay_comm_free
dham Mar 29, 2023
a1437d0
data_with_halos increments dat_version
connorjward Apr 3, 2023
59e109e
Merge pull request #694 from OP2/connorjward/fix-dat-versioning
JDBetteridge Apr 3, 2023
ed2ff83
DO NOT MERGE Try with updated PETSc branch
connorjward May 2, 2023
539f9cf
Try installing wheel
connorjward May 2, 2023
5903f7a
Add simple halo methods to Global and DatView (#695)
connorjward May 2, 2023
c665bbc
Drop Python 3.7
connorjward May 4, 2023
53a265c
Remove old requirement
connorjward May 4, 2023
0d1c5b0
Merge pull request #700 from OP2/connorjward/test-updated-petsc
JDBetteridge May 4, 2023
b255f06
Change import location to avoid loopy deprecation warning
connorjward May 2, 2023
06697a3
Merge pull request #699 from OP2/connorjward/deprecation-warning
JDBetteridge May 4, 2023
edae288
Expunge COFFEE (#697)
connorjward May 10, 2023
d230953
Global with no comm is a Constant (#701)
JDBetteridge Jun 14, 2023
92e756b
Insert zero blocks on matrix diagonals (#704)
connorjward Aug 23, 2023
8e4ad93
don't die if the cache dir doesn't exist (#707)
dham Aug 29, 2023
da14715
fix dat version (#709)
ksagiyam Sep 27, 2023
d017d59
Fix halo exchanges for MixedDats in parloops (#710)
connorjward Oct 18, 2023
fbde61f
mat + sparsity: use dset.layout_vec.local_size for sizes (#714)
ksagiyam Jan 9, 2024
ad0c430
Comm reference fixes + Remove __del__ method and add weakref.finalize…
JDBetteridge Jan 17, 2024
e0a4d3a
Passthrough params (#708)
pbrubeck Jan 24, 2024
eba7baf
For testing firedrake
JDBetteridge Feb 5, 2024
bfa7810
sparsity: fix some tests
ksagiyam Dec 8, 2023
09968a4
sparsity: repack rmaps, cmaps, and iteration_regions in maps_and_regions
ksagiyam Dec 8, 2023
3e436ee
sparsity: change interface to directly accept maps_and_regions
ksagiyam Dec 11, 2023
dc513fb
sparsity: add diagonal_block to kwargs
ksagiyam Dec 20, 2023
48a54d3
sparsity: ignore negative map indices
ksagiyam Dec 20, 2023
d60101b
sparsity: add test
ksagiyam Dec 20, 2023
0afe7fa
Merge pull request #713 from OP2/ksagiyam/sparsity
ksagiyam Mar 1, 2024
f424fb5
Merge pull request #717 from OP2/JDBetteridge/angus-g-fix
JDBetteridge Mar 5, 2024
594e87b
Change for MixedMesh implementation (#718)
ksagiyam Apr 3, 2024
eea5523
removed serial case in lgmap.
emmarothwell1 Dec 12, 2023
1b386a4
Added constrained_size to Set and creation of matrix.
emmarothwell1 Jan 5, 2024
17c20a7
layout_vec includes constrained case.
emmarothwell1 Jan 10, 2024
3b28acb
Put serial case back in for DataSet
emmarothwell1 Jan 25, 2024
acbbec9
global kernel _cache_key contains form signature
emmarothwell1 Jan 28, 2024
cd6e8b0
adding constrained size for mixed sets.
emmarothwell1 Feb 20, 2024
f990aab
add constrained size in lgmap for mixeddataset
emmarothwell1 Feb 26, 2024
d3eec81
apply pr suggestions for naming things
emmarothwell1 Mar 6, 2024
7c64679
remove whitespace
emmarothwell1 Apr 21, 2024
4e1bb3c
remove signature from global kernel.
emmarothwell1 Apr 23, 2024
8fa2ff3
Update pyop2/types/set.py
emmarothwell1 Apr 25, 2024
ebbed56
Merge pull request #716 from OP2/emmarothwell1/restricted_function_sp…
ksagiyam Apr 26, 2024
7bef38f
Fix for massively parallel performance regression (#720)
JDBetteridge May 8, 2024
c97a043
Support numpy 2.0
connorjward Apr 11, 2024
a52b998
Merge pull request #721 from OP2/JDBetteridge/numpy2_rebase
JDBetteridge Jun 7, 2024
7f3e8ae
Reset numbering when generating
JDBetteridge Jun 11, 2024
af813e9
Merge pull request #722 from OP2/JDBetteridge/reset_numbering
JDBetteridge Jun 12, 2024
5f18075
composed map: add permute method (#723)
ksagiyam Jun 18, 2024
b84b770
DatView: Fix zero() (#727)
pbrubeck Sep 4, 2024
31471a6
Remove comm hash and add per-comm caches (#724)
JDBetteridge Oct 9, 2024
47f2151
Merge remote-tracking branch 'pyop2/master' into JDBetteridge/merge_p…
JDBetteridge Oct 22, 2024
09a8055
Lint
JDBetteridge Oct 23, 2024
ee3dddd
Remove PyOP2 from install script
JDBetteridge Oct 23, 2024
1485de5
Update checkout version
JDBetteridge Oct 23, 2024
212214c
Moar linting
JDBetteridge Oct 23, 2024
fc70dcd
Remove another instance of PyOP2
JDBetteridge Oct 23, 2024
43efbfe
Rename workflow
JDBetteridge Oct 23, 2024
302c78d
Add more targets to clean
JDBetteridge Oct 23, 2024
09c0be7
Fix setup
JDBetteridge Oct 23, 2024
966aafc
Fix loopy import
JDBetteridge Oct 23, 2024
17d6a89
Move doc
JDBetteridge Oct 23, 2024
d1f74df
Move tests
JDBetteridge Oct 23, 2024
8518390
Stop building out of date PyOP2 docs
JDBetteridge Oct 23, 2024
fe1ca11
Add C++ compiler
JDBetteridge Oct 24, 2024
ee838e0
Ignore old PyOP2 docs
JDBetteridge Oct 24, 2024
af076b1
Update requirements
JDBetteridge Oct 29, 2024
0343d6b
WIP
JDBetteridge Oct 30, 2024
47cc33a
Add pyproject.toml
JDBetteridge Oct 31, 2024
f96be6e
Minor fixes
JDBetteridge Oct 31, 2024
77dbf7e
More fixes, install script too fragile!
JDBetteridge Oct 31, 2024
9561eb1
PyOP2 tests need hdf5 ow
JDBetteridge Oct 31, 2024
84a91cb
Add scripts and expand pyproject.toml
JDBetteridge Oct 31, 2024
4a73f53
More setup noodling
JDBetteridge Oct 31, 2024
8e2bf56
Try installing h5py
JDBetteridge Oct 31, 2024
04bc852
Try installing h5py
JDBetteridge Oct 31, 2024
767f5f2
Try installing h5py
JDBetteridge Oct 31, 2024
9244258
Typo
JDBetteridge Oct 31, 2024
fa73211
Quote scripts
JDBetteridge Oct 31, 2024
0519e07
Scripts need to be importable
JDBetteridge Oct 31, 2024
82e9d31
Help libspatialindex
JDBetteridge Oct 31, 2024
8338999
Typo
JDBetteridge Oct 31, 2024
b2df6bb
Install script moved
JDBetteridge Oct 31, 2024
6345ef0
update linting
JDBetteridge Oct 31, 2024
4b5b94f
Move scripts
JDBetteridge Oct 31, 2024
34dd9d5
Moved install script
JDBetteridge Oct 31, 2024
35e1eb6
Remove firedrake_configuration from init
JDBetteridge Nov 1, 2024
848307a
Missed a file
JDBetteridge Nov 1, 2024
9ca612d
Purge most uses of firedrake_configuration
JDBetteridge Nov 1, 2024
a205aa8
Put cahe in a hidden directory
JDBetteridge Nov 1, 2024
6f6e467
Mainly libsupermesh fixes
JDBetteridge Nov 2, 2024
fc86dd8
Scripts moved
JDBetteridge Nov 2, 2024
7978894
Move all firedrake tests to a directory
JDBetteridge Nov 5, 2024
c6cfa0d
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 5, 2024
b42812a
Linting
JDBetteridge Nov 5, 2024
0d99b18
Check if pinning decorator fixes issue
JDBetteridge Nov 5, 2024
a50fc04
Add test dependencies to PyOP2
JDBetteridge Nov 5, 2024
9890fe0
Rewrite setup.py
JDBetteridge Nov 9, 2024
42c9989
Remove versioneer info from setup.cfg and dependencies
JDBetteridge Nov 9, 2024
6e71d7c
Quoting for install line
JDBetteridge Nov 9, 2024
94aa126
Moved demos relative to test
JDBetteridge Nov 9, 2024
bb2c7b7
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 9, 2024
474edea
Add docs optionals and requires-python
JDBetteridge Nov 9, 2024
2c1bfc0
Tweaking
JDBetteridge Nov 9, 2024
4839c0a
Start utilising pkgconfig
JDBetteridge Nov 9, 2024
7ae7e5a
Simplify PyOP2 workflow
JDBetteridge Nov 10, 2024
ca816f0
Recursion
JDBetteridge Nov 10, 2024
e3fd0bd
Apparently we dropped support for 3.9
JDBetteridge Nov 10, 2024
dd133b6
Fiddling
JDBetteridge Nov 10, 2024
7e3d16f
Can't spell
JDBetteridge Nov 10, 2024
3052110
Can't spell
JDBetteridge Nov 10, 2024
4047c21
Can't esacpe
JDBetteridge Nov 10, 2024
2d47f3a
asdgfjs
JDBetteridge Nov 10, 2024
48e0773
SSH debugging
JDBetteridge Nov 10, 2024
e7d745d
We should have been usin the HDF5 that PETSc was configured with anyway
JDBetteridge Nov 10, 2024
5cfd9af
Typo
JDBetteridge Nov 10, 2024
ea2c122
Keep going
JDBetteridge Nov 10, 2024
eb01682
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 11, 2024
0b9e96f
PyOP2 now defaults to the compiler that PETSc uses
JDBetteridge Nov 12, 2024
337726a
Firedrake dropped Python 3.9 support
JDBetteridge Nov 12, 2024
fa1221a
Silly mistakes
JDBetteridge Nov 12, 2024
b016b67
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 12, 2024
c362142
We don't test different configurations nearly enoguh
JDBetteridge Nov 12, 2024
f1e2ba8
Give up on linker, it's difficult
JDBetteridge Nov 12, 2024
a5a41cc
That was a tuple before, let's not change it now
JDBetteridge Nov 12, 2024
258eca5
Find the include dir for libsupermesh
JDBetteridge Nov 12, 2024
58b5388
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 13, 2024
5e05709
Stop building libsupermesh manually in install script
JDBetteridge Nov 13, 2024
5d52d65
Why does CI always fail differently
JDBetteridge Nov 14, 2024
5ff50c2
Indent
JDBetteridge Nov 14, 2024
96db3eb
Do the strange issues find me?
JDBetteridge Nov 14, 2024
41d6193
Remove SSH
JDBetteridge Nov 14, 2024
aedbccd
Remove explicit type information from Cython ndarrays
connorjward Nov 5, 2024
687471c
Add a pip install workflow
JDBetteridge Nov 14, 2024
2672c39
Python is python3
JDBetteridge Nov 14, 2024
e268efe
SSH to the rescue
JDBetteridge Nov 14, 2024
946f175
username
JDBetteridge Nov 14, 2024
5f6e9ea
cd GHA style
JDBetteridge Nov 14, 2024
d380774
Forgot you have to be root on GH hosted runners!
JDBetteridge Nov 14, 2024
8c1ed82
Let's use BASH rather than sh, eh?
JDBetteridge Nov 14, 2024
47f67f9
WIP
JDBetteridge Nov 15, 2024
f783882
WIP
JDBetteridge Nov 15, 2024
a36acc2
WIP
JDBetteridge Nov 15, 2024
bf01e93
WIP
JDBetteridge Nov 15, 2024
38e7c8e
WIP
JDBetteridge Nov 15, 2024
761091b
WIP
JDBetteridge Nov 15, 2024
3b8ae1e
Remove SSH
JDBetteridge Nov 15, 2024
671f865
Fix for complex tests
JDBetteridge Nov 15, 2024
4131454
mpi4py is not a build dependency
JDBetteridge Nov 15, 2024
664e854
Merge branch 'master' into JDBetteridge/merge_pyop2_tsfc
JDBetteridge Nov 15, 2024
1291b46
Lint
JDBetteridge Nov 15, 2024
03edd7b
mpi4py is a build dependency
JDBetteridge Nov 15, 2024
6461014
Merge remote-tracking branch 'origin/master' into JDBetteridge/merge_…
connorjward Nov 18, 2024
952be65
Shorten pip testing
connorjward Nov 18, 2024
d4cacf2
fixups
connorjward Nov 18, 2024
c6a2856
change user in pip
connorjward Nov 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
# Set default behaviour, in case users don't have core.autocrlf set.
* text=auto

# Whitespace
* whitespace=tab-in-indent,space-before-tab,trailing-space,tabwidth=2
*.{py,pyx,pxd,pxi} whitespace=tab-in-indent,space-before-tab,trailing-space,tabwidth=4
Makefile whitespace=space-before-tab,trailing-space,tabwidth=2
pyop2/_version.py export-subst
firedrake/_version.py export-subst
7 changes: 4 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ jobs:
- name: Build Firedrake
run: |
cd ..
export MPI_HOME=$PETSC_DIR/packages
# Linting should ignore unquoted shell variable $COMPLEX
# shellcheck disable=SC2086
./firedrake/scripts/firedrake-install \
./firedrake/firedrake/scripts/firedrake-install \
$COMPLEX \
--honour-petsc-dir \
--mpicc="$MPICH_DIR"/mpicc \
Expand Down Expand Up @@ -96,15 +97,15 @@ jobs:
. ../firedrake_venv/bin/activate
echo OMP_NUM_THREADS is "$OMP_NUM_THREADS"
echo OPENBLAS_NUM_THREADS is "$OPENBLAS_NUM_THREADS"
python -m pytest -v tests/test_0init.py
python -m pytest -v tests/firedrake/test_0init.py
python -m pytest \
--durations=200 \
--timeout=1800 \
--timeout-method=thread \
-o faulthandler_timeout=1860 \
-n 12 --dist worksteal \
--junit-xml=firedrake.xml \
-sv tests
-sv tests/firedrake
timeout-minutes: 120
- name: Publish Test Report
uses: mikepenz/[email protected]
Expand Down
109 changes: 109 additions & 0 deletions .github/workflows/pip.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
name: Pip install Firedrake

on:
# Push to master or PR
push:
branches:
- master
pull_request:

concurrency:
# Cancels jobs running if new commits are pushed
group: >
${{ github.workflow }}-
${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
name: "Build Firedrake using pip"
# Run on our self-hosted machines
runs-on: [self-hosted, Linux]
container:
image: firedrakeproject/firedrake-env:latest
defaults:
run:
shell: bash
working-directory: /home/firedrake
strategy:
# Don't immediately kill real if complex fails and vice versa.
fail-fast: false
matrix:
include:
- scalar-type: real
petsc_arch: default
- scalar-type: complex
petsc_arch: complex
env:
# PETSC_DIR, HDF5_DIR and MPICH_DIR are set inside the docker image
FIREDRAKE_CI_TESTS: 1
PYOP2_CI_TESTS: 1
PETSC_ARCH: ${{ matrix.petsc_arch }}
OMP_NUM_THREADS: 1
OPENBLAS_NUM_THREADS: 1
RDMAV_FORK_SAFE: 1
steps:
- name: Cleanup
if: ${{ always() }}
run: rm -rf pip_venv

- name: Create a venv
run: python3 -m venv pip_venv

- uses: actions/checkout@v4
with:
path: src/firedrake

- name: Pip install
run: |
ln -s /__w/firedrake/firedrake/src pip_venv/
source pip_venv/bin/activate
cd pip_venv/src
export CC="$MPICH_DIR/mpicc"
export CXX="$MPICH_DIR/mpicxx"
export MPICC="$MPICH_DIR/mpicc"
export MPI_HOME="$PETSC_DIR/packages"
pip install \
--log=firedrake-install.log \
--no-binary mpi4py,h5py \ # do these need to be no-binary?
-v -e './firedrake[test]' # must the install be editable?

- name: Add mpiexec to the venv and install timeout
run: |
source pip_venv/bin/activate
cat << EOF > "$VIRTUAL_ENV/bin/mpiexec"
#!/bin/bash
"$MPICH_DIR"/mpiexec "\$@"
EOF
chmod +x "$VIRTUAL_ENV"/bin/mpiexec
pip install -U pytest-timeout

- name: Run Firedrake smoke tests
run: |
source pip_venv/bin/activate
cd pip_venv/src/firedrake
pytest -v tests/firedrake/test_0init.py
pytest \
--durations=200 \
--timeout=1800 \
--timeout-method=thread \
-o faulthandler_timeout=1860 \
-n 12 --dist worksteal \
--junit-xml=firedrake.xml \
-sv tests/firedrake/regression -k "poisson_strong or stokes_mini or dg_advection"
timeout-minutes: 120

- name: Publish Test Report
uses: mikepenz/[email protected]
if: ${{ always() && ( github.ref != 'refs/heads/master') }}
with:
report_paths: '/home/firedrake/pip_venv/src/firedrake/firedrake.xml'
comment: true
check_name: "Firedrake ${{ matrix.scalar-type }}"
updateComment: true
flaky_summary: true

- name: Cleanup
# Belt and braces: clean up before and after the run.
if: ${{ always() }}
run: rm -rf pip_venv
84 changes: 84 additions & 0 deletions .github/workflows/pyop2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: PyOP2

# Trigger the workflow on push or pull request,
# but only for the master branch
on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
test:
runs-on: ubuntu-latest
strategy:
# Don't immediately kill all if one Python version fails
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
env:
CC: mpicc
PETSC_DIR: ${{ github.workspace }}/petsc
PETSC_ARCH: default
RDMAV_FORK_SAFE: 1
PYOP2_CI_TESTS: 1
timeout-minutes: 60

steps:
- name: Install system dependencies
shell: bash
run: |
sudo apt update
sudo apt install build-essential mpich libmpich-dev \
libblas-dev liblapack-dev gfortran libhwloc-dev libfabric-dev

- name: Set correct Python version
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Clone PETSc
uses: actions/checkout@v4
with:
repository: firedrakeproject/petsc
path: ${{ env.PETSC_DIR }}

- name: Build and install PETSc
shell: bash
working-directory: ${{ env.PETSC_DIR }}
run: |
./configure \
--download-hdf5 \
--with-debugging=1 \
--with-shared-libraries=1 \
--with-c2html=0 \
--with-fortran-bindings=0
make

- name: Checkout PyOP2
uses: actions/checkout@v4
with:
path: PyOP2

- name: Install PyOP2 dependencies
shell: bash
working-directory: PyOP2
run: |
python -m pip install -U pip
python -m pip install -U pytest-timeout

- name: Install PyOP2
shell: bash
working-directory: PyOP2
run: python -m pip install -v ".[test]"

- name: Run tests
shell: bash
working-directory: PyOP2
run: |
# Running parallel test cases separately works around a bug in pytest-mpi
pytest -k "not parallel" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
mpiexec -n 3 pytest -k "parallel[3]" --tb=native --timeout=480 --timeout-method=thread -o faulthandler_timeout=540 -v tests/pyop2
timeout-minutes: 10
31 changes: 31 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,34 @@ __pycache__/
/firedrake_configuration/configuration.json
/firedrake.egg-info
/docs/source/element_list.csv


# Build
build
dist
MANIFEST
PyOP2.egg-info
*.py[cdo]

# Extension modules
sparsity.so
sparsity.c
sparsity.cpython*.so
# Docs
pyop2.coffee.rst
pyop2.rst
pyop2.pdf
pyop2.aux
pyop2.log

# Testing
.pytest-incremental
.tox
.vagrant

# Meshes
*.edge
*.ele
*.msh
*.node
*.geo
19 changes: 19 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,22 @@ Joe Wallwork <[email protected]>
Jingmin Xia <[email protected]>
Jingmin Xia <[email protected]> <[email protected]>

Gheorghe-Teodor Bercea <[email protected]> <foraker.doc.ic.ac.uk>
George Boutsioukis <[email protected]>
David A Ham <[email protected]>
David A Ham <[email protected]> <[email protected]>
Miklós Homolya <[email protected]>
Nicolas Loriant <[email protected]> <[email protected]>
Nicolas Loriant <[email protected]> <[email protected]>
Nicolas Loriant <[email protected]> <[email protected]>
Nicolas Loriant <[email protected]> <[email protected]>
Nicolas Loriant <[email protected]> <[email protected]>
Fabio Luporini <[email protected]> <[email protected]>
Graham Markall <[email protected]> <[email protected]>
Graham Markall <[email protected]> <[email protected]>
Andrew McRae <[email protected]> <[email protected]>
Andrew McRae <[email protected]> <[email protected]>
Lawrence Mitchell <[email protected]> <[email protected]>
Lawrence Mitchell <[email protected]> <[email protected]>
Kaho Sato <[email protected]>
Reuben W. Nixon-Hill <[email protected]> <[email protected]>
31 changes: 31 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Firedrake:
Firedrake is free software: you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
Expand All @@ -11,3 +12,33 @@ License for more details.
You should have received a copy of the GNU Lesser General Public
License along with Firedrake. If not, see <http://www.gnu.org/licenses/>.

PyOP2:
Copyright (c) 2012, Imperial College London and others. Please see the
AUTHORS file in the main source directory for a full list of copyright
holders. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* The name of Imperial College London or that of other
contributors may not be used to endorse or promote products
derived from this software without specific prior written
permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTERS
''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
3 changes: 3 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
include versioneer.py
include firedrake/_version.py
recursive-include pyop2 *.c
include pyop2/_version.py

24 changes: 16 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@ else
endif

lint:
@echo " Linting firedrake codebase"
@echo " Linting firedrake"
@python -m flake8 $(FLAKE8_FORMAT) firedrake
@echo " Linting firedrake test suite"
@python -m flake8 $(FLAKE8_FORMAT) tests
@echo " Linting firedrake scripts"
@python -m flake8 $(FLAKE8_FORMAT) scripts --filename=*
@python -m flake8 $(FLAKE8_FORMAT) firedrake/scripts --filename=*
@echo " Linting firedrake tests"
@python -m flake8 $(FLAKE8_FORMAT) tests
@echo " Linting PyOP2"
@python -m flake8 $(FLAKE8_FORMAT) pyop2
@echo " Linting PyOP2 scripts"
@python -m flake8 $(FLAKE8_FORMAT) pyop2/scripts --filename=*

actionlint:
@echo " Pull latest actionlint image"
Expand Down Expand Up @@ -65,6 +69,10 @@ clean:
-@rm -f firedrake/cython/mg/impl.so > /dev/null 2>&1
@echo " RM firedrake/cython/mg/impl.c"
-@rm -f firedrake/cython/mg/impl.c > /dev/null 2>&1
@echo " RM pyop2/*.so"
-@rm -f pyop2/*.so > /dev/null 2>&1
@echo " RM tinyasm/*.so"
-@rm -f tinyasm/*.so > /dev/null 2>&1


THREADS=1
Expand All @@ -76,15 +84,15 @@ endif

test_regression: modules
@echo " Running non-extruded regression tests"
@python -m pytest tests/regression $(PYTEST_ARGS)
@python -m pytest tests/firedrake/regression $(PYTEST_ARGS)

test_extrusion: modules
@echo " Running extruded regression tests"
@python -m pytest tests/extrusion $(PYTEST_ARGS)
@python -m pytest tests/firedrake/extrusion $(PYTEST_ARGS)

test_demos: modules
@echo " Running test of demos"
@python -m pytest tests/demos $(PYTEST_ARGS)
@python -m pytest tests/firedrake/demos $(PYTEST_ARGS)

test: modules
@echo " Running all regression tests"
Expand All @@ -94,4 +102,4 @@ alltest: modules lint test

shorttest: modules lint
@echo " Running short regression tests"
@python -m pytest --short tests $(PYTEST_ARGS)
@python -m pytest --short tests/firedrake $(PYTEST_ARGS)
Loading
Loading