Hypergraph-based system execution scheduler. - #8
Conversation
This is very likely broken
Removal might be temporary, I can just revert commits
Most likely fails, my environment broke again.
Just realized that branches that are going to join can run how fast they want.
The scheduler would push all threads to the same transition, causing potential races.
Temporary addition, will be removed in the next commit.
|
I'm giving up on the Fibonacci Heap for now as I don't know how to implement removal without key decreases. |
|
I'm not sure if I fully grasp your modeling. Let me illustrate what I read from your wording first. 1 Build HypergraphLet's say so hyperedges are
So the systems sharing a hyperedge may conflict. 2 Build Another Graph To Represent The CompatibilityBased on
As a result, we got graph TD
A <--> C
B <--> C
And based on what you said
I think the resulting graph isn't necessarily disjoint and I just created a counterexample.
Therefore, the resulting graph is a compatibility graph instead of a conflict graph. 3 Compatibility Graph Coloringgraph TD
A[Red] <--> C[Blue]
B[Red] <--> C[Blue]
4 Add To Priority QueuesAnd the priority is set by the user right? Let's say A is greater than B here. Just a quick check, B runs after A, which is correct as both of them wants 5 Build The DAG (aka
|

In this PR, I implemented a system scheduler that automatically decides which tasks can be ran in parallel.
The Scheduler works as follows:
TODO:
Use a Fibonacci Heap in the graph coloring function as it's faster.