unitaryfund / qrack

Comprehensive, GPU accelerated framework for developing universal virtual quantum processors
https://qrack.readthedocs.io/en/latest/
GNU Lesser General Public License v3.0
172 stars 38 forks source link

"Clifford-permeable domain wall" in QStabilizerHybrid #954

Closed WrathfulSpatula closed 1 year ago

WrathfulSpatula commented 2 years ago

QBdt is unstable with Attach(), though it is stable without any calls to that method. As I've recently spoken about a "Clifford-permeable domain wall" between stabilizer and (universal) heterogeneous other simulation types, I think the intent of issue #944 might be aided by reformulating the problem, in terms of only needing to be able to act entangling Clifford gates between stabilizer and any kind of universal qubit.

The best place to enter this method into Qrack is probably QStabilizerHybrid, at the switch-off interface between ket and stabilizer simulation. It might be necessary to produce exponential copies of one-or-the-other end of the ket/stabilizer interface, but we would prefer exponential copies of stabilizer, for its fundamentally square memory footprint, as opposed to exponential.

I'll have more to add over the weekend.

WrathfulSpatula commented 2 years ago

(The number of copies might actually be reciprocal, in terms of square or exponential, but nonetheless.)

WrathfulSpatula commented 2 years ago

(Seeing as we're going to want to reduce footprint as much as possible in general, the method of quantum binary decision trees still seems expedient to maximal compression of simulator copy redundancy, but we're not abandoning it, just returning to more familiar territory to orient ourselves.)