Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

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

(PyQrack is just pure Qrack.)

This is the purely CPU-based variant of PyQrack (with module name pyqrack-cpu). This alternate build of PyQrack is provided so that systems that won't use OpenCL or CUDA anyway (such as because they lack any GPUs or other accelerators like the Intel HD) do not need to install the OpenCL library in order to use PyQrack. In this form, both the PyQrack module and the underlying C++ Qrack library are entirely external dependency-free.

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

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_cpu-1.72.4.tar.gz (49.6 kB view details)

Uploaded Source

Built Distributions

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

pyqrack_cpu-1.72.4-py3-none-win_amd64.whl (708.0 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.72.4-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.72.4-py3-none-manylinux_2_35_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.72.4-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.72.4-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_cpu-1.72.4-py3-none-macosx_13_0_x86_64.whl (2.2 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pyqrack_cpu-1.72.4.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.72.4.tar.gz
Algorithm Hash digest
SHA256 a5469bba6ef6cbd0469b036e7c1511a6ffdf340f38c3ca75fa692a127c4d8496
MD5 45745ec6454d8c60b97aa976e21ba81e
BLAKE2b-256 3aaef1975267e59fbb0693a315143ecc98fa81882e316cd6e80a188cb74c7be4

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack_cpu-1.72.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 708.0 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e64a6c2a7bdc68f61f722f2d4db17b5b310cc0081aec9e2f14cf0e16c112152f
MD5 c7134f11ad2eca5913b8f66e07ed7cd7
BLAKE2b-256 8be881ae2209e84284ea76a5ac0d18047c830e05051eeb17cf0a46f14ca3ca92

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 21ca1ae1e14495a86a9019c75e379286b9bb3499e31f31c622f6fa6df8f96290
MD5 3c57b443a19e7fd1a75c2d177945a99a
BLAKE2b-256 e4d898ade90e6c6eb14565be64814db1cf7b55533b1f6031f4bfd3666f762163

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 9b47b22fd06f528f0b0550e5dbe4e4ace762fb71d98d6d5e606455d5ac6bdacb
MD5 71980af0cc2b8c1f6b4278a8add4a95a
BLAKE2b-256 e39b174bdbb23e55a472eb9658056d8d0fb7845dbf3f52f1f4c5db1414d124be

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 43dad7d87359f364c0dc9459cbbd1f6c369f07ce813f924497c581e96474613e
MD5 604798b5cece0a134f3e5f352de0ff01
BLAKE2b-256 852f061962d0b66b982e65bc55338b19a154f9d51fe16672e5ed541e3d6559ea

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a5ba087cab7473201afbf66ba97daf37ee13422844f5f10ce2ce8759f172813d
MD5 73cbe160722c28784eea4b7e93330a9f
BLAKE2b-256 436f936c7a861e9be9b8b8a679d89807749f382ab56139f589d1bf7ee04ce7f4

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.72.4-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.4-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e1109256d0bb0d063beeccaf567cce690bffbd2407a556fe143110c14e0e2669
MD5 a8c6a538c45b0cf75c562fb16b9d52fb
BLAKE2b-256 9356074ea4aefc27e3f14fd2d00df2e10ac8e41cfd80e98a01a0910335f61418

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