zapatacomputing / benchq

Resource estimation for fault-tolerant quantum computation.
Apache License 2.0
54 stars 12 forks source link

graph state simulator and dense tableaux simulator #110

Open Krastanov opened 1 year ago

Krastanov commented 1 year ago

Hi, @AthenaCaesura ! You mentioned that there is a graph state simulator that can be "extracted" from this codebase. The dense tableau simulator I mentioned is https://github.com/QuantumSavory/QuantumClifford.jl

AthenaCaesura commented 1 year ago

Awesome! Looks like some interesting stuff. I had a think about how to do this integration and I have a few ideas. The graph simulator I mentioned is here in the graph_sim_mini and graph_sim_data files. There are a few things to do:

  1. Make graph_sim_mini take in QuantumClifford.jl circuits. This shouldn't be too bad since it only supports 8 operations. (6 single qubit Cliffords (modulo Paulis) and the CZ/CX gates).
  2. Part of the "mini" in graph_sim_mini is that I don't provide any tools for measurement (we just care about generating the graph). The easiest way to include this functionality is just to convert the graph to a tableau and use the sampling operations you already have available. But converting to a tableau is O(# qubits) and for sparse cases where graph_sim_mini would be applied, the number of qubits will most likely be large.
  3. Using your Pauli frame tracker to multiply the final state by the required Paulis (since graph_sim_mini ignores Paulis)
  4. Since benchq is provided under Apache and QuantumClifford.jl is under GNU just taking graph_sim_mini and graph_sim_data and plopping them into QuantumClifford.jl might cause some issues with Zapata's IP unless we include a copy of Apache in the files along with a notice that it's been modified. (tbh I don't care about this at all, I just don't want our lawyers to get mad at me... so I'll have to talk with someone who knows more)

I think that does it! Probably not too much work. But will take a few hours at least.

AthenaCaesura commented 1 year ago

Tagging @ScottPJones here since he expressed interest in this project as well.

AthenaCaesura commented 1 year ago

Hello @Krastanov! Can we meet sometime soon to discuss how this integration would happen? I've got some questions about how QuatnumClifford.jl works. Tbh it's probably just stemming from my lack of Julia knowledge. But it would still be helpful to know what data structures I should be using.

Krastanov commented 1 year ago

@AthenaCaesura , apologies, I missed the notification about this post. I am relatively available next week, is there a day you would prefer to have a call on? It is probably more reliable to message me at stefan@krastanov.org

AthenaCaesura commented 1 year ago

Hello! Sorry I missed your message now! (why don't we just email from now on since this has failed us twice 😆 ). I figured out that my point 3 above is going to be much harder than I anticipated. But I am in the process of working it out right now.