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.78.4.tar.gz (4.0 MB 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.78.4-py3-none-win_amd64.whl (754.5 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.78.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.78.4-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.78.4-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-1.78.4.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.78.4.tar.gz
Algorithm Hash digest
SHA256 0708054818f613ada25d3fdbbc809a6b1207fa529a63b2ba368fa439f0122fff
MD5 7bb625a2c0da335bf12f744c6c831aed
BLAKE2b-256 b64d1844f10458ce74ac757e646e9d577241ef78015d3c64a270bd7fd9da97f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.78.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 754.5 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.78.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 014bd31a3618cc22568ec085a52f8c9e803ac6c3f59187bb6b9ffcfa7a02760e
MD5 744cbbb98b0c5c1e0fbdcf83634d852d
BLAKE2b-256 42f6aebcc553ebebee0e43638c4a1a8d76bec4d0fdb3f0923c055dba86a4dcc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 657f0b30c32d0af4990e10c826ce447f38498804024ea313b2441be0bcf9dc48
MD5 e33f10b151893e7d3f9d553865e8e5aa
BLAKE2b-256 18e139ba14a700efe8f3b5840f8f7a6217f35583e02a81e1a8f127cad3886512

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 5c1209a155dc631af3aabb073bca69a7fd59409fe5ce75169e878a41cc9082a7
MD5 b0638de37cc903380f9c5f1ee69432f4
BLAKE2b-256 24a890aaaa359441465a46606c9065da7560094618181e5ee12794175e68788f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 9417021503cedc5b96787a38a8848b0f634568a18d52358830d2288cdf3449cc
MD5 846dd872626b55948a917ed1fb5a78c2
BLAKE2b-256 ece17500339281b4afcf2fc50fde541170bbbe63d6d5af1ebb26a5dfaaf11458

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 45b8341b321daaf120104c676a13412ab34112b7cfefc104d1390f22afebe319
MD5 0383de59d19fe50db875bb62c1464004
BLAKE2b-256 f7002aa20142ac65863c36934f16f16d12f12868f062890a813d613e153c4fb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f3405e203dd7f9656df978696ef4839b45c0f5d19ee9351209674653563d297e
MD5 8ed39acbe238b5d811de1ddd90178f23
BLAKE2b-256 fd11ba164f82b1266cf2da34166e887bbdc4b660d08d3408c0aad4fecf5b6d5e

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