-
Notifications
You must be signed in to change notification settings - Fork 0
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
[WIP] adding OMEinsumContractionOrders results #2
Conversation
Woah, those results look really good :) I haven't read Kalachev's paper on using simulated annealing for this yet but it's interesting how well treeSA does compared to the others. How long did it take to run with the given number of iterations do you know? |
Co-authored-by: John Brennan <johnmarkbrennan@gmail.com>
The timing for these contraction order finders:
Compiling time is not excluded, so this is just a crude estimation. |
Thanks @GiggleLiu that's interesting. I think it would be nice to try use OMEinsumContractionOrders in QXTools. I originally thought about adding several methods along side flowcutter and eventually implementing something like Johnny Gray's hyper optimized method as that approach strikes me as the best for generic networks. Do you know if anything similar is planned for OMEinsumContractionOrders? or if there are any plans to include slicing as a feature? |
Slicing is not planned, but is very likely to be added in the future when I or someone needs it. The goal of I make you one of the collaborators of OMEinsumContractionOrders, or you create another package that implements the
|
One more comment, the standard tensor network representation has a drawback that it has to introduce some delta tensors. As a result, the treewidth can increase significantly. For example, in one of my application, the treewidth of a king's graph of size LxL is 3L (standard notation) v.s. L+2 (einsum notation). I am worrying that part of your overhead comes from the use of delta tensors. Einsum as a hypergraph version of tensor network is easier to find a good contraction order. BTW: if you are interested in converting Yao to OMEinsum contraction code, I can release a public version first (I just need to discuss with some other people first), it is only 129 lines of code... |
UPDATE: we have made |
We are actually already using I'm still not sure where the neatest place is for slicing. We are aiming to run circuit simulations on different clusters and one thing we wanted was a workflow were we use I think to proceed, I'll create a another package to prototype it (and I can try implement the 'optimize_code' interface for flowcutter also) and we can revisit it when I have a better idea of how I'd like to organize it. |
Sounds good 👍🏾 |
I use OMEinsumContractionOrders to find the optimal contraction order, the best space complexity I can get is 52.
Part of the code.
YaoToOMEinsum
has not been public yet. So you might not be able to reproduce the result at this moment. I need to polish this package until it can be good enough to open source. So you do not need to merge this PR hurry.