-
-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compressed state vectors #576
Comments
I know that work has been seemingly ill-fated, so far, but I might make sense to start by reviving |
QPager has been dug out of the commit history, debugged, and optimized. Now is probably a good time to look into compressing "pages" under QPager, for the next few days. I'd like QPager to first give a practical return over the same layer stack without QPager as a layer, but, failing that, at least we might increase the maximum possible number of qubits that can be simulated (with a significant execution time premium) on any system using "paging." |
https://github.com/glampert/compression-algorithms looks like a great (public domain) source for implementing this. I'm anticipating that QEngineCPU and QEngineOCL need |
For the Unitary Fund Hackathon, this is the advanced difficulty, "extra credit" issue option I'd suggest. It is not necessary to be able to operate gates or logic on compressed state vectors, but, using a standard compression algorithm under appropriate open source licensing, we should implement the If all External dependency and licensing is a high priority concern for vm6502q/qrack, where our only required external dependency forever has been C++11 standard! We're proud of that, and we want to keep it that way. The compression algorithms repository linked above looked good, for the purpose, but you're free to use anything with LGPL compatible licensing that preferably doesn't become a required external dependency, (but it can be an optional external dependency, alternatively, or an LGPL compatible licensed internal source inclusion). |
Per a talk I saw at QCE'21by Robert Wille, binary decision trees might be a great way to approach compressed state vector that can be directly operated on. He also said, when pressed, that binary decision trees aren't necessarily limited by entanglement, (if we think of states with all permutations with equal probability but a few binary decision phase factors, for example,) whereas Qrack's Schmidt decomposition is fundamentally limited by high entanglement. I think we should experiment with (rank 1) ket-based binary decision trees, to compress the high-entanglement states that filter down to ket or |
As discussed above, |
|
This specifically will not be in the January 1st release, but (conventional compression algorithm) state vector compression could probably add at least a qubit or two to maximally entangled capacity on any given system, if at significant speed cost.
QUnit
is already a Schmidt decomposed representation of state, which reduces RAM needs, butQEngine
type sub-unit state vectors typically must have far less Shannon entropy per float than type capacity, by simple considerations, compressed with even just a ZIP algorithm, for example.I'm sure much has been said and done on this front by other parties already, but part of this issue is researching those approaches. For Qrack, a compressed QEngine type would still synergize with QUnit's capabilities. We might subclass QEngineCPU, with a corresponding new subclass of StateVector, or perhaps we could get away with just the StateVector subclass and a configuration option for QEngineCPU. Since we've introduced "hybrid" types, both QEngineCPU and QEngineOCL efficiency effectively contribute together to overall simulator performance, but GPU compressed state vectors are a little daunting, for the moment, and might not pay.
The text was updated successfully, but these errors were encountered: