Firedrake meeting 2021 02 10 - firedrakeproject/firedrake GitHub Wiki
Date and time 2021-02-10 16:00UTC (16:00GMT)
Action Items
- Pick Chair and Minuter.
- ALL: (ongoing) triage the open issues and confirm if they are indeed still open (and perhaps provide labels)
Minutes
Present:
DH, LM, PK, CW, DS, JB, NB, RNH, RK, SK, SV, KS
Apologies:
assembly_callable
on the form? (CW)
Stash - This would eliminate a lot of the symbolic overhead occurring in
assemble()
but may annoy James.
RK observed 45% assembly time saving by using create_assembly_callable
.
PyOP2 design question:
- Need nice separation: things that you need to execute and data to execute those on.
- ParLoop objects not to hold DataCarrier objects at all: in principle we just need shapes.
- args (shape, READ/WRITE, Map) are now in code, but these should actually be attached to the kernel separately from data.
Short term hack?
- Don't introduce public API change
- Modify
create_asembly_callable
so that it would take output tensor?
Realated (pointwise assignment):
Pointwise assignement is inefficient for the same reason, but this is harder as there is no persistent object lying around (we make new expression every time).
-> Lift expressions to make them persistent objects.
Related (time integration):
Define reusable Block, and allow for:
while t < ntime:
timestep.replay() # run through stashed parloop
CW may or may not work on these.
FEnICS 2021
What to present
RK: irksome
India: dual space
NB : external operator
KS: subspace (may or may not) -> write abstract
Deadline: 20/02/2021
RNH: TSFC "bug fixes"
See https://github.com/firedrakeproject/tsfc/pull/237 - source of some discussion (Miklos doesn't think the PR is necessary) that seems to get at some core GEM design philosophy questions.
Two possibilities:
A[i,j]=B[j]
-> implicitly broadcast across iA[i,j]=Broadcast(B[j], i)
or something (explicit broadcast node makes it more type-safe)
Merge PRs:
AOB
Date of next meeting
2021-02-17 16:00UTC (16:00GMT)