Pyqrack

Latest version: v1.33.1

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

Scan your dependencies

Page 37 of 55

0.20.4

Sorry for the rapid-fire releases, but the past 12 to 24 hours have seen a flurry of activity that I might consider a "breakthrough" in multiple OpenCL device simulation. In this release, very old code was cut in the `QStabilizerHybrid` constructor in the default optimization layer stack, _removing a redundant layer of `QPager`_. ARM binaries have also been fixed, to use shortcuts instead of a duplicate file for shared library aliases, which should reduce wheel sizes.

0.20.3

Continuing the work from last night in v0.20.2, `QUnitMulti` stack selection edge cases have been fixed, for proactive OpenCL device distribution. Automatic device redistribution is totally avoided unless explicitly enabled when a `QEngineOCL` exists at the bottom of the layer stack, as opposed to `QHybrid`, which can switch device designations for free before crossing the CPU-to-GPU threshold.

0.20.2

QUnitMulti` in C++ Qrack has been significantly revised. As a result, proactive distribution to multiple devices is better.

If your throughput suffers as a result of this version upgrade, first try switching `isSchmidtDecomposeMulti=False` in your `QrackSimulator` constructor. Realize that if you have two heterogeneous devices, like a primary GPU and an integrated graphics accelerator, then the smaller accelerator's throughput would be less, but its memory capacity might be more than the primary GPU.

Additional control of multiple OpenCL device systems can be modulated through virtualization environments, like VirtualCL or SnuCL.

0.20.1

This release tunes `QBdt` defaults. (`QBdt` is still included in the default stack only with `QRACK_QBDT_DEFAULT_OPT_IN` environment variable set truthy.) `QRACK_SEGMENT_QBDT_QB` now controls the paging segment size relative max single `QEngineOCL` qubit allocation, and its default value is 5, (for 5 page segment powers, plus 2 global qubits over 4 pages of a GPU).

0.20.0

QBdt` ("quantum binary decision tree") has finally been made production-ready. (I considered it experimental, in all previous versions.) As a Qrack layer, it fully interoperates with `QUnitMulti` and `QStabilizerHybrid`. Although it is not intended for use _with_ `QPager`, commonly, it can _replace_ `QPager` as a single-device "paged" simulation, (commonly for 4 pages on an NVIDIA device), by using as many "global qubits" as `QPager`.

The place of `QBdt` in the default empty stack (from fully default `QrackSimulator` constructor Boolean options) is as a replacement for `QPager` layer _only when no `QPager` device list is specified_ by environment variable. However, for the first release with this default layer change, one must manually opt-in to the change by setting environment variable `QRACK_QBDT_DEFAULT_OPT_IN` to any truthy value. (For example, on a Linux system, `export QRACK_QBDT_DEFAULT_OPT_IN=1` at command line to turn the option on for the current terminal session.)

By default, `QBdt` will offload a single device maximum allocation segment to ket simulation. Ket is simply faster in this role, for now, but the two freely interoperate, as with a permeable domain wall between the two methods, but the domain wall is not necessarily managed by module user's code. As `QBdt` can act analogously to `QPager` this way, single device `QBdt` instances at maximum capacity will typically have two `QBdt` method qubits in lowest significance indices, which can be leveraged to specific purposes for their algorithmic strengths. To add relatively more `QBdt` method qubits than just two per device, select the count of extra qubits to add by setting environment variable `QRACK_SEGMENT_GLOBAL_QB` to that integer. (This environment variable does the same thing for `QPager`.)

(Special thanks to Jülich Supercomputing Centre and researchers including Robert Wille, re: your presentation at IEEE Quantum Week, 2021! See for example: https://arxiv.org/abs/2108.07027)

0.19.6

A bug in `QUnit::ISwap()` gate has been fixed, by removing the `SWAP_IDENT()` macro from `QUnit`.

Page 37 of 55

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.