zapatacomputing/benchq

graph state simulator and dense tableaux simulator

Opened this issue · 5 comments

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

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.

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

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.

@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

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.