Readme and rename

This commit is contained in:
Anton Reinhard 2023-06-22 12:25:20 +02:00
parent 1fbf080bcb
commit f71748838f
3 changed files with 20 additions and 2 deletions

View File

@ -1,3 +1,21 @@
# metagraph-optimization
Directed Acyclic Graph optimization for QED
Directed Acyclic Graph optimization for QED
## Generate Operations from chains
We assume we have a (valid) graph given. We can generate all initially possible graph operations from it, and we can calculate the graph properties like compute effort and total data transfer.
Goal: For some operation, regenerate possible operations after that one has been applied, but without having to copy the entire graph. This would be helpful for optimization algorithms to try paths of optimizations and build up tree structures, like for example chess computers do.
Idea: Keep the original graph, a list of possible operations at the current state, and a queue of applied operations together. The "actual" graph is then the original graph with all operations in the queue applied. We can push and pop new operations to/from the queue, automatically updating the graph's global metrics and possible optimizations from there.
Problems:
- The list of operations can be very large, it would be helpful to somehow separately know which possible operations changed after applying one.
- Operations need to be perfectly reversible, so we need to store replaced nodes and new nodes.
- Lots of testing required because mistakes will propagate and multiply.
## Other TODOs
- Reduce memory footprint of the graph, are the UUIDs too large?
- Memory layout of Nodes? They should lie linearly in memory, right now probably on heap?
- Add scaling functions

View File

@ -9,7 +9,7 @@ include("graph.jl")
include("task_functions.jl")
include("node_functions.jl")
include("graph_functions.jl")
include("graph_optimizations.jl")
include("graph_operations.jl")
include("import.jl")
export Node, Edge, ComputeTaskNode, DataTaskNode, DAG