-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize transactron eager_deterministic_cc_scheduler
#13
Comments
eager_deterministic_cc_scheduler
The maximal clique problem is NP-complete, and so the algorithms for listing them - like the most frequently cited Bron-Kerbosch algorithm - are worst-case exponential. Some algorithms have better bounds for real-life graphs, like (hopefully) the conflict graphs in Transactron. For example:
The python library NetworkX has an implementation of some variant of Bron-Kerbosch. Maybe it can be used to perform some experiments. Side note: using clique info it's probably possible to implement some sort of fairness in transaction scheduling. I'm not sure how useful this would be in practice. |
I have run the maximal clique algorithm on current Coreblocks in the |
The circuit generated by
eager_deterministic_cc_scheduler
can be improved a bit. Consider a set of transactions in which every transaction conflicts with every other. This in fact can happen quite often - when all transactions call the same method (ManyToOneConnectTrans
). The scheduler would create for each transaction:Thus,
grant
signal of the last transaction would form a critical path of the linear size.In the case of a clique of conflicts, we could simply choose the first bit set (a la a priority encoder) - logarithmic length of the critical path.
In general, for any given graph of conflicts, we could find a clique cover and then for every clique make a priority encoder.
Having said that, I am not sure (and I don't have data) if this is worth doing at all.
The text was updated successfully, but these errors were encountered: