Pyqrack

Latest version: v1.28.0

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

Scan your dependencies

Page 28 of 45

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

0.19.5

A minor bug has been fixed in stabilizer `ISwap()`, in the underlying Qrack library. Default decomposition of `ISwap()` has also been simplified.

0.19.4

This release improves the 2-qubit variant of `TrySeparate()` (used internally and exposed publicly) to generally identify separable 2-qubit subsystems and separate them from simulation bulk. (To take maximum advantage of the optimization, consider using doubly-controlled gates wherever they can reduce circuit depth.)

**If you pre-compile your OpenCL kernels with `qrack_cl_precompile`, it will be necessary to recompile them, for this release.**

0.19.3

Stabilizer sampling seemed to bugged in cases, before being modified in v0.19.2. However, that fix significantly hurt performance. Now, it seems possible to revert to the better-performing version of the sampling methods after fixes in default layer selection for stabilizer engine clones.

0.19.2

QEngineOCL has been refactored for best practices. This includes converting OpenCL host pointers, when in use, to managed "smart pointer" instances, for segmentation safety. C++ exceptions are also no longer thrown in OpenCL C function callbacks.

This refactor of best practices was motivated by attempting to debug what was causing systems to hang in _very_ high qubit width, experimental benchmarks. If you wish to exceed your system's raw state vector capacity in attempts to leverage Schmidt decomposition, we suggest that you set the environment variable `QRACK_MAX_PAGING_QB` equal to the number of qubits for which your system has capacity for **just naive state vector simulation**. You _can_ still exceed this number of qubits in `QUnit` or `QStabilizerHybrid`, but it gives a necessary hint to any underlying `QPager` instance, that its state vector methods _will_ be exceeded by higher qubit allocation attempts, (excepting 0 amplitude "pages," but this optimization is not typically viable beyond the appropriate `QRACK_MAX_PAGING_QB` hint level).

Page 28 of 45

Links

Releases

Has known vulnerabilities

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.