Comments (5)
I think this is something like where we ought to go. I'm not sure whether proxy block is the right way to do it.
The way we share state between forward solves right now is by having all the related solve blocks share some state information. This could be expanded to more shared state (particularly the adjoint solves).
I think it would be worth fleshing out which of these approaches is preferable. Maybe put it on the meeting agenda.
from firedrake.
I like this idea of leaving it up to the coder to decide
from firedrake.
I like this idea of leaving it up to the coder to decide
I don't think either of these options does that. This is still the same taping process.
What is proposed is that if a e.g. NonLinearVariationalSolver has its solve method called twice, you either get:
- A Solve block the first time and then a Proxy block pointing at the Solve block the second time.
- Two solve blocks but they both have an (e.g.)
._ad_block_shared_state
member which contains the data that is shared between the two blocks (the forward and adjoint solvers, for example).
from firedrake.
A related pipe dream of mine is for us to employ enough smart caching that we could get near to equivalent performance calling the solve
function compared with creating and reusing solvers.
This would all be interesting to discuss in this week's meeting.
from firedrake.
Related Issues (20)
- BUG: Memory leaks in firedrake-adjoint HOT 3
- INSTALL: Error installing PETSc on M1 mac. HOT 6
- BUG: Failure to compose SCPC with geometric multigrid HOT 2
- Multigrid prolongation/restriction for general finite elements
- BUG: String parloops are untested HOT 1
- "netgen" config key error in firedrake-update
- Add support for `MPI.IN_PLACE` to `Ensemble` methods.
- BUG: Netgen tests fail when Netgen not installed HOT 8
- Zenodo release HOT 2
- BUG: Segmentation fault when assembling matrices for very high degree spaces HOT 2
- BUG: coordiantes of mesh was created without respect to the coordinate section of dmplex HOT 2
- Strange gradient result HOT 3
- BUG: Pytorch not installed correctly HOT 4
- successful installation but code is not working HOT 13
- BUG: Ubuntu install picks up wrong shared libraries HOT 1
- BUG: interpolating to VOM produces two blocks on the adjoint tape HOT 3
- BUG: Building Firedrake with SLEPc fails if building in a specific directory HOT 3
- BUG: Matrix instantiation is more expensive than it needs to be
- INSTALL: `mpirun` not symlinked by `firedrake-install` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from firedrake.