Pyqrack

Latest version: v1.27.8

Safety actively analyzes 628903 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 36 of 45

0.10.11

Over the weekend, I attempted to clean up inline methods in the underlying Qrack C++ library. Doing so led to instability in Qrack's `QPager` layer, due to spawning too many CPU threads. (Likely, higher peak thread usage is because of slightly better performance.) I corrected this instability by making `QEngine` methods like `ShuffleBuffers()` asynchronous, so `QPager` does not need to dispatch any threads of its own for gate methods. As a result, `QPager` is likely more stable, for peak thread dispatch, than even before reviewing inline methods.

0.10.10

A long-standing bug in `QStabilizer` measurement has been corrected. Previously, `QStabilizerHybrid` was aware of the bugged cases and switched to "ket" representation internally before carrying out such measurements, but now measurement operations on `QStabilizerHybrid` can be performed entirely natively with `QStabilizer::M()`, with no performance penalty for ket conversion. Also, partly as a side-effect, stabilizer measurement distribution sampling seems to have significantly increased speed.

0.10.9

Qrack's `QStabilizer` has been overhauled, related to work on `QBdt`. While the changes in (C++) Qrack are significant, this is a semantically minor version update for PyQrack, with no change in the API. Of note to PyQrack users, Qrack's `QStabilizerHybrid` layer might now perform better in specific cases, and its internal Pauli Y basis conventions have been debugged. (The noticeable difference in binary size is likely due to expanded polymorphic inheritance from the `QEngine` interface, which is a significant advancement for Qrack, but this interface is currently not directly exposed to PyQrack.)

0.10.8

This release improves performance in certain cases via better quantum gate decompositions as default `QInterface` implementations in the underlying Qrack library. As a result, certain gates like `add()` and `sub()` become possible to simulate at high width with a stack involving `QPager`, since these methods no longer divert to single "page" `QEngine` implementations.

`CloneEmpty()` has been added to the `QEngine` API, such that internal operations which need to "clone" a simulator peer can do so without a redundant duplication of the original simulator's state vector.

Finally, `QBdt` (for "quantum binary decision trees") has been overhauled. Support for this simulation method is still at the experimental phase, but it can potentially reduce RAM footprint for CPU-based simulation in cases of limited entanglement, at the cost of (for now) greatly increased execution time. (The compression technique of this simulation method is somewhat redundant with Schmidt decomposition, but not entirely, and the two can be used at the same time.)

0.10.7

This release contains an improved set of Qrack binaries. Qrack now dispatches certain "stabilizer" or "Clifford" workloads as asynchronous tasks, both internally and from the users' public API. Previous bugs in high-width stabilizer simulation might also be corrected, as a result.

(Note that much higher widths than 63 or 64 qubits can be achieved with builds of the underlying vm6502q/qrack library from source. Beyond v0.10.7, I might consider building higher width versions of the library for base binary wheel distribution, but this version is up to 64 qubits in a simulator, for now, as all previous releases should have also been.)

0.10.6

This further improves upon Schmidt decomposition techniques.

"About 90%" of 4 years of code debt in Qrack's `QUnit` has been cut. The reason I'm not waiting for 100%, to release, is that I worry that v0.10.5 was unstable or erroneous, while the head of Qrack is momentarily greatly improved.

Page 36 of 45

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.