Pyqrack

Latest version: v1.27.8

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

Scan your dependencies

Page 26 of 45

0.21.4

This release fixes the proactive distribution of load over devices in `QPager::Compose()`, which allows it to work under `QUnit`, (as on a local test system with a NVIDIA RTX 3080 and an Intel HD, for one additional qubit over that attainable with just the RTX 3080).

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.)

Page 26 of 45

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.