-
Notifications
You must be signed in to change notification settings - Fork 161
Firedrake meeting 2021 04 21
Date and time 2021-04-21 15:00UTC (16:00BST)
- Pick Chair and Minuter.
- ALL: (ongoing) triage the open issues and confirm if they are indeed still open (and perhaps provide labels)
- PB: add comments to own code in this PR
- LM:
Crap out the geometric boundary stuffdone: please review https://github.com/firedrakeproject/firedrake/pull/2007 - ALL: (ongoing) schedule Firedrake Meeting + tutorial session for ICG
Present: Jack Betteridge, Reuben Nixon-Hill, David Ham, Mariana Clare, Koki Sagiyama, Daniel Shapera, Lawrence Mitchell, Sophia V, Rob Kirby, Connor Ward, Kaushik Kulkarni, Thomas Gibson, Nacime Bouziani
Apologies:
Using the branch equation_bc_tape_mc
(and some changes to pyadjoint) we are now able to correctly tape EquationBC. However, there are a few issues calculating the derivative mainly because EquationBC was not designed to be used with _la_solve
which is what pyadjoint uses when calculating the derivative. It also seems like evaluate_adj_components
is never called on BC blocks which seems confusing. [MC]
- DH: DirichletBC requires thinking about "un-symmetrised BCs" and "symmetristation process as a preconditioner". Noted that statement "adjoint problem always has homogenous boundary conditions" is untrue. (Specific mathematical details were run through but too quickly to minute). Suggest using BC as a control to test.
- DH: EquationBC more complex to deal with. KS and DH think need an "assemble BC" option.
- DH: In general having cofunctions will make some of these problems go away by being able to apply BCs by having cofunctions as forcing term.
- Status: have PyOP2 tests passing. Now looking at firedrake. Dealing with changes to loopy where loopy "programs" can now contain multiple "kernels" with their own "entrypoints": may need mixture of loopy and firedrake/pyop2/tsfc changes to deal with.
- Unclear how difficult the outstanding firedrake issues will be to fix.
- Some loopy fixes are breaking downstream packages because they relied on now deprecated language features.
- Problem with PyOP2 discovered where a recent update to the decorator package breaks some pyop2 tests. Decorator package now pinned to before this change. Decorators are being used for hand-rolled argument type checking.
- DH notes that all this is relic of mistaken belief that users will write their own PyOP2 code so argument checking probably doesn't have to be quite as strict.
- Problem with PyOP2 tests rediscovered where tests are not independent from one another - abuse of pytest's fixtures which ought to be fixed. Notably in PyOP2 matrix tests. This stops tests from being run in parallel.
- Discussions between LM and FEniCSx developers
- Hope to tidy some corners of UFL
- Redo composition of FiniteElements and visitor infrastructure
- DH would like to see removal of bolted on language features which are in python anyway
- LM opinion: surface language close to correct with some corner case issues, but would like to rewrite some of the internals. If you write variational forms you shouldn't have to change much. If you transform UFL a lot then you might need to adapt.
- DH described changes that India Marsden is currently making in defining new forms, of which cofunctions, matrices, external operator and
interp
are examples. This gets around needing to completely rewrite the form infrastructure of UFL (i.e. we leave the primal-space language alone). The dual space language, i.e. language of form manipulations, is much smaller than the primal space language: reckon we need differentiation and addition only which are fairly easy to define. - LM keen to see UFL's differentiation implementation use fewer operations if possible, e.g. for residual assembly (which needs speed ups in other places too)
- Changes to type hierarchy would be nice
- DH highlights that the fundamental distinction of expressions and forms seems correct: adding additional features is hard because of existing inheritance structures.
- LM notes FiniteElement is a bit of a mess
Would make a nice 4th year project to improve the interface. Believe the interface is reasonably straightforward as long as you start from a generalised nonlinear eigenproblem, write out what a generalised solver for that would look like, and work towards specific case (i.e. will need a strong student).
2021-04-28 15:00UTC (16:00BST)
Building locally
Tips
- Running Firedrake tests with different subpackage branches
- Modifying and Rebuilding PETSc and petsc4py
- Vectorisation
- Debugging C kernels with
lldb
on MacOS - Parallel MPI Debugging with
tmux-mpi
,pdb
andgdb
- Parallel MPI Debugging with VSCode and
debugpy
- Modifying generated code
- Kernel profiling with LIKWID
- breakpoint() builtin not working
- Debugging pytest with multiple processing
Developers Notes
- Upcoming meeting 2024-08-21
- 2024-08-07
- 2024-07-24
- 2024-07-17
- 2024-07-10
- 2024-06-26
- 2024-06-19
- 2024-06-05
- 2024-05-29
- 2024-05-15
- 2024-05-08
- 2024-05-01
- 2024-04-28
- 2024-04-17
- 2024-04-10
- 2024-04-03
- 2024-03-27
- 2024-03-20
- 2024-03-06
- 2024-02-28
- 2024-02-28
- 2024-02-21
- 2024-02-14
- 2024-02-07
- 2024-01-31
- 2024-01-24
- 2024-01-17
- 2024-01-10
- 2023-12-13
- 2023-12-06
- 2023-11-29
- 2023-11-22
- 2023-11-15
- 2023-11-08
- 2023-11-01
- 2023-10-25
- 2023-10-18
- 2023-10-11
- 2023-10-04
- 2023-09-27
- 2023-09-20
- 2023-09-06
- 2023-08-30
- 2023-08-23
- 2023-07-12
- 2023-07-05
- 2023-06-21
- 2023-06-14
- 2023-06-07
- 2023-05-17
- 2023-05-10
- 2023-03-08
- 2023-02-22
- 2023-02-15
- 2023-02-08
- 2023-01-18
- 2023-01-11
- 2023-12-14
- 2022-12-07
- 2022-11-23
- 2022-11-16
- 2022-11-09
- 2022-11-02
- 2022-10-26
- 2022-10-12
- 2022-10-05
- 2022-09-28
- 2022-09-21
- 2022-09-14
- 2022-09-07
- 2022-08-25
- 2022-08-11
- 2022-08-04
- 2022-07-28
- 2022-07-21
- 2022-07-07
- 2022-06-30
- 2022-06-23
- 2022-06-16
- 2022-05-26
- 2022-05-19
- 2022-05-12
- 2022-05-05
- 2022-04-21
- 2022-04-07
- 2022-03-17
- 2022-03-03
- 2022-02-24
- 2022-02-10
- 2022-02-03
- 2022-01-27
- 2022-01-20
- 2022-01-13
- 2021-12-15
- 2021-12-09
- 2021-11-25
- 2021-11-18
- 2021-11-11
- 2021-11-04
- 2021-10-28
- 2021-10-21
- 2021-10-14
- 2021-10-07
- 2021-09-30
- 2021-09-23
- 2021-09-09
- 2021-09-02
- 2021-08-26
- 2021-08-18
- 2021-08-11
- 2021-08-04
- 2021-07-28
- 2021-07-21
- 2021-07-14
- 2021-07-07
- 2021-06-30
- 2021-06-23
- 2021-06-16
- 2021-06-09
- 2021-06-02
- 2021-05-19
- 2021-05-12
- 2021-05-05
- 2021-04-28
- 2021-04-21
- 2021-04-14
- 2021-04-07
- 2021-03-17
- 2021-03-10
- 2021-02-24
- 2021-02-17
- 2021-02-10
- 2021-02-03
- 2021-01-27
- 2021-01-20
- 2021-01-13
- 2021-01-06