Skip to main content

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!

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-2.15.0.tar.gz (67.7 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-2.15.0-py3-none-win_amd64.whl (827.8 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-2.15.0-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-2.15.0-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-2.15.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pyqrack_cpu-2.15.0.tar.gz
Algorithm Hash digest
SHA256 ffd22974d8fb70501992677cb70f5ec1250ac7b568003272d138f2d2ebc0745e
MD5 fe6ad86d4305b05ba15887946b693fc6
BLAKE2b-256 2159db4b609854bd3217403cbf9655a2cc1e47c6878efdf2c375fb5c90b7942d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 85837ec4390951663125a85865c08699e4e0882213b6e33c89d866f2b412d962
MD5 dc7cf92ad1deb817635fe5d757516b91
BLAKE2b-256 91316dea5a06f2d463d719f78b5a5a4cc5e8c2c8295022052e3d0ccc63982301

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a5ec0f76ce113085d1defb4543e229d2a794042a01f2f552cd4a9fadf40b641b
MD5 8639aea32ae67454c9eb6f99d157121d
BLAKE2b-256 16b82f5bb199b067330dd9cc45a55a53617856cb68282b68ddfedbc3386b4513

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 8a1199ea88d13a9e664fa5051680ed717c549b262dff03eb4cb4a5cef0451b7f
MD5 13234ce1b892a1d337754711a84889e7
BLAKE2b-256 26da260d124f4ae1ad0ad0f3b55fb667c0a05621e858a5cd7e1a280b0e8b5bbb

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.15.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ccdcd66f47d6318cd167ddd757dcbc50b29caac01ec22e33af5c2a1043620c2d
MD5 a7eff263a21b6d088e3c443ee98593ea
BLAKE2b-256 62c1cf34463863cf3b0a85843bc80ac3767ca3189d21e5d61079c80650017f2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 020516d695a44cc4925e19a4c5d78d480527fb843a855870e732fc9287c30e1c
MD5 5aa919f65773b0ff7ca270e94f10078e
BLAKE2b-256 9d165067e168560e5a641cd646d7691cbbac66f32e7ae3aff680465983e5d1c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.15.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d62670de152221a18d09ce12de8de904c6af068ac960da047a825c8ec82a811f
MD5 cb749bc3cfd5920313f519b3d62271af
BLAKE2b-256 79b725de3a217ee2348bf19b238bfd8e53df34f1ee61c631c862a3dd21068f2b

See more details on using hashes here.

Release history Release notifications | RSS feed

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