-
Notifications
You must be signed in to change notification settings - Fork 6
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
feat: Embarrassingly parallel TASO #149
Conversation
7f5b865
to
2b64a63
Compare
Give me a second, I'm testing equality on |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good! We just need to find that bug...
Update: with #150 the tests now use ~2.5GB peak memory. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm tempted to approve it, but let's wait until I have verified the failing circuits using other means.
We'll resolve this next week.
Only output them immediately before they are consumed by an operation.
890e44e
to
1dfb492
Compare
- Remove duplicated tk1 writer fn - Better .dot debug API
Can you run this one more time on Thanks a lot! |
Extracts the circuit cost definitions from `rewrite::strategy` into `circuit::cost`, and adds methods `Circuit::nodes_cost` and `Circuit::circuit_cost`. With this we can use the cost logic for `CircuitChunks::split_with_cost`. Drive-by: There are some `CircuitChunks` QoL updates extracted from #149 that I didn't separate from this PR.
304082a
to
a1f61b9
Compare
This still doesn't support identity wires in the chunks, so it will errors out if an optimization produces one. I'm working on that on the side, but that can go in a separate PR. The current impl works alright as long as we don't do that. Here are the updated benchmarks, optimizing
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
The empty-chunks panic is now fixed in #172 |
Use the
CircuitChunks
splitter for running TASO on different parts of the circuit.--split-circ
flag to the taso optimizer bin, to split the circuit before running instead of sharing the full circuit between threads.node_cost
parameter to the splitter to split circuits according to our cost functions.I'm getting some really good results with this, we should test if they are correct :P
Optimizing
barenco_tof_10.json
(192 CX gates):(these are noisy results, as I'm running them on a non-idle laptop)
Edit: Updated measurements
Optimizing barenco_tof_10.json (192 CX gates):