Pyqrack

Latest version: v1.33.1

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

Scan your dependencies

Page 36 of 55

0.21.3

This release fixes a segmentation fault in the `QUnit` over `QStabilizerHybrid` layer stack.

0.21.2

We seem to run into significantly fewer memory safety errors in high-width benchmarks, by replacing the use of (C++) `std::vector<QEnginePtr>.push_back()` in iteration over state vectors with a pre-allocated vector of `NULL` pointers.

After having debugged `QPager`, many systems seem significantly more susceptible to "hanging" on high-width circuits. To alleviate this, devices default to a memory usage limit of 3/4 of their global RAM, (usually equivalent to 3 out of 4 maximum allocation segments). This allocation limit can be turned up or down, per device, with the environment variable `QRACK_MAX_ALLOC_MB`. (Also consider setting `QRACK_MAX_PAGING_QB`.)

0.21.1

With v0.21.0, apparent `QPager` performance was significantly reduced, though the results are more correct, so a comparison to the previous bugged implementation might not be fair. However, we have prioritized improving performance in the new implementation.

v0.21.1 has about a 10% improvement in overall execution time for a representative 30 qubit QFT on an RTX 3080 GPU using `QUnit`.

0.21.0

QPager` in the underlying Qrack library, for multi-device or multi-allocation-segment simulation, has been extensively debugged. Its apparent performance might suffer on multi-page loads, but the tradeoff is that its results are now reliable correct, comparatively.

`QMaskFusion` layer has been totally removed from Qrack, and the corresponding `is1QbFusion` PyQrack layer option with it. The intent of `QMaskFusion` is still accomplished by `mx()`, `my()`, and `mz()`, but the layer that automatically composes these operations out of `x()`, `y()`, and `z()` calls provides no practical benefit, under any circumstances ever observed.

0.20.6

QBdt` now takes `QHybrid` as its default base simulator type, allowing it to take advantage of `QEngineCPU` for low-width simulations while scaling to `QBdt`-based qubits as a replacement for `QPager`.

`QBdt` is now part of the default optimal stack, without an opt-in environment variable. To opt-out of using `QBdt` as part of default optimal stack, set `QRACK_QPAGER_DEVICES=-2`, or set `QRACK_QPAGER_DEVICES` to any set of devices you intend. (The special device ID value `-2` indicates that `QInterface`-local default device should be used, as opposed to `-1` for global default device. `-2` will not interfere with the distribution of `QUnitMulti`, for example, hence this is effectively already the default setting for `QRACK_QPAGER_DEVICES`, except for `QBdt` usage choice.)

0.20.5

Notably, this release fixes the version check logic for GNU `libc`. It also cuts some "junk" out of the C++ code for `QUnitMulti` and `QStabilizerHybrid`. (My hope is to use this version as a reference for my own benchmarks.)

Page 36 of 55

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.