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
176 stars 38 forks source link

"Litmus test" for brute force TryDecompose() #800

Closed WrathfulSpatula closed 3 years ago

WrathfulSpatula commented 3 years ago

In QUnit internals, TryDecompose() should catch all cases of separable single qubits that Clifford basis checks miss. However, this check is extremely expensive, compared to Clifford basis checks only. However, simulated experimental probing suggests that, on the unit circle, under arbitrary rotation of a separable pure state, the root-mean-square of probability vector length along 3 orthogonal axes (as calculated herein) is never less than 1/2.

WrathfulSpatula commented 3 years ago

(We could also determine this with the trace of the reduced density matrix, but I don't think that is a computationally efficient enough check to be practical for us, at the moment. See https://quantumcomputing.stackexchange.com/questions/2263/how-do-i-show-that-a-two-qubit-state-is-an-entangled-state, for example.)

WrathfulSpatula commented 3 years ago

I'm still assessing whether any difference in success rate for high width circuits is worth the execution time increase. I'll merge if and when I feel comfortable that it is.

WrathfulSpatula commented 3 years ago

(It's likely that any marked increase in success rate would be sufficient.)

WrathfulSpatula commented 3 years ago

There does seem to be a marked increase in success rate, for high width circuits. These widths take longer on 100 trials, but some indeterminate part of the execution time increase seems to be due to fewer average failures. The execution time increases on attainable width/depth combinations also appear tolerable, in practical use.

Merging.