Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Reason this release was yanked:

Empirical results are worse

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11/OpenCL Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

Note: You must also install OpenCL to use this version of Qrack. (There are also CPU-only and CUDA version.)

If you're looking for Mac ARM support, use the package pyqrack, not pyqrack-cpu. Mac officially "deprecated" OpenCL years ago. Hence, accelerator support is not included in ARM-based Mac wheels, and OpenCL installation is not required on these systems, but, if you have a CUDA accelerator on ARM-based Mac, you could try the package pyqrack-cuda instead.

Performance can benefit greatly from following the Qrack repository "Quick Start" and "Power user considerations."

If you use an integrated graphics accelerator, like the Intel HD, setting environment variable PYQRACK_HOST_POINTER_DEFAULT_ON=1 (or to any "truthy" value) will automatically set the default of isHostPointer option of QrackSimulator to True, to engage "zero-copy" mode by default.

Import and instantiate QrackSimulator instances. This simulator can perform arbitrary single qubit and controlled-single-qubit gates, as well as other specific gates like SWAP.

Any 2x2 bit operator matrix is represented by a list of 4 complex floating point numbers, in row-major order.

Single and array "b" parameters represent Pauli operator bases. They are specified according to the enumeration of the Pauli class.

MC[x] and MAC[x] methods are controlled single bit gates, with as many control qubits as you specify via Python list c argument. MCX is multiply-controlled Pauli X, and MACX is "anti-"controlled Pauli X, i.e. "anti-control" activates the gate if all control bits are specifically off, as opposed to on.

To load the required unitaryfund/qrack libraries from a different location, set the PYQRACK_SHARED_LIB_PATH environment variable.

PyQrack has experimental support for PyZX Circuit definitions as an intermediate representation for QrackSimulator. To try this, load a Circuit in PyZX, (use that module to optimize your circuit, as you like,) and create a QrackSimulator() instance using the pyzxCircuit named argument of the constructor, like so:

sim = QrackSimulator(pyzxCircuit=c)

where c is a PyZX circuit object. The circuit will automatically be simulated in the constructed QrackSimulator instance. This also allows loading from QASM and other intermediate representations supported by PyZX.

See https://pyqrack.readthedocs.io/en/latest/ for an API reference.

For custom Qrack build floating-point precision, where options are half, float, double, and quad, set an environment variable via export QRACK_FPPOW=[n] (or as appropriate to your shell) where [n] is the logarithm base 2 of the number of bits in the systemic floating point type (4, 5, 6, or 7, with 5 or float as default, i.e. 2**5=32 for 32-bit float). Your Qrack installation floating-point build option must match this specific value, which might require a custom Qrack build.

Please feel welcome to open an issue, if you'd like help. 😃

Special thanks go to Zeeshan Ahmed, for bug fixes and design suggestions, Ashish Panigrahi, for documentation and design suggestions, WingCode, for documentation, Or Golan, for CI build pipeline tooling, and to the broader community of Qrack contributors, for years of happy Qracking! You rock!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqrack_complex128-1.84.4.tar.gz (51.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_complex128-1.84.4-py3-none-win_amd64.whl (1.0 MB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.84.4-py3-none-manylinux_2_39_x86_64.whl (3.5 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.84.4-py3-none-manylinux_2_35_x86_64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.84.4-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_complex128-1.84.4-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.84.4-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file pyqrack_complex128-1.84.4.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.84.4.tar.gz
  • Upload date:
  • Size: 51.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack_complex128-1.84.4.tar.gz
Algorithm Hash digest
SHA256 79a6a5b67cb65027946119038adc4e128e7920c089722ef0926950723b987559
MD5 77e029bdee7a4304def68aa55cf3b1fa
BLAKE2b-256 5fbc3358742d76ab70403ec67be13d24ef6433c3bb2555e305ae7f8975f521a8

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 11b17228d8e8fa49694ca1db9ddab1780d239da7f29d33bdbfe82d477dd6fffc
MD5 7b3a1f66e13fe2a51b2d70ded65aecad
BLAKE2b-256 9440756be9bbaa1ae322e3a5f054ad26b37ac7e4c7ea1923246d407fb55dc6d4

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 72a4f4eba0b7e6eb9cee9035d6b8896c8bbfde766a2fa0c0d50c52d663b4c3f8
MD5 39d86e3fb3bd9ac43b5ddc54e65ae1f9
BLAKE2b-256 2ff929eed8ba9d8820c49aa85bf013d66dafb7b3140981098303afd3b3519028

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 73f0c081474aba6049f8c798dc25f73ba9e5e7cbc1fd33d87a331ff7934604f3
MD5 2d12c776599f1a9680ad85c13862aa22
BLAKE2b-256 f32d6047856b7f103a1a35360d2b2a2dfa18d8e5133080e0866ead60515e4bb5

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d1080b98418c3e7b38f0b8a7f6f3fb01acee859c418e126326038196efa06442
MD5 6dc1c5af730e5462ca973bdaf11169ad
BLAKE2b-256 a2d269ea358d40e33c82f1135c2fb0cbf9bdb4c576513ab609013a87bca3f9ce

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ba42a97c5124ddde33028c8cbafc4076e7f39847abb3b1f0320ff28153d31c4f
MD5 1b5973c6021f2f693e67b605edd68b82
BLAKE2b-256 d7eb6b77cd3e517e1d7d7d6ab1bf6c4936616128f4a8852fa5fc63a587cd8b57

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.4-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1244761fd1cbe13d23680377cc3712f2b381d6961998a83ed8c93be16186381a
MD5 d02e394ff44cdaacc9f555c5c75a3f69
BLAKE2b-256 76bf76b78075ba4a0bddc4414bb855893f6a501cbaecf6e1941bb457d81a6539

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page