Closed gwwatkin closed 2 years ago
@isolatedinformation I think your opinion would be helpful here
Excluding Patches
If I understand what you mean correctly, I think we would run into problems similar to ops.pop()
. If only the correctness of the smaller statevector, this would be alright I think.
Seperability and Caching
External Simulators This choice depends more on how we want to depend on existing simulators. I remember @alexnguyenn he wants to reduce the dependency on Qiskit. Relying on other simulators would prevent us from reinventing the wheel again.
Issue Description
Simulation is a critical bottleneck right now and it is because of simulating useless patches.
Right now simulation of longer circuits happens at a much slower speed because every patch that is ever on the lattice contributes to one big state vector. In particular state vector size grows exponentially with y-depth and t-depth, because each of these operations is associated with an new patch that contributes an extra qubit in the logical lattice computation, doubling it's size.
Even these patches aren't contributing to the computation for nearly the whole length of the computation. This makes simulating circuits of just a couple lines infeasible without y operator removal.
Addressing this issue will greatly expand the set of circuits we can test.
Proposed Solution
Here are some possible solutions: