WIP: Feature: PetscCallGraph
Step 2 of the en-streamening of PETSc. Discovering parallelism and swapping streams by hand is difficult, so PETSc should do this for you!
Features
- Store any arbitrary function call, with all of its arguments! [Extension: determine order from function arguments?]
- Created graphs are stream-aware, and when it identifies parallelism in a graph, will automatically create and manage streams for you.
- It is also possible to enqueue graph execution on a stream meaning that...
- Created graphs are fully composable with one another. One can combine an arbitrary number of graphs together to form a super graph. The parent graph will also manage any child graphs streams.
-
Loops (the A in DAG is optional) are also supported via composition(WIP, might get axed).
Edited by Jacob Faibussowitsch