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.84.1.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_cpu-1.84.1-py3-none-win_amd64.whl (757.7 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.84.1-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_cpu-1.84.1.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_cpu-1.84.1.tar.gz
Algorithm Hash digest
SHA256 8bb62e12aeba2a9431ab4fae260ab0fb57128cbf0c9973bdc726d678e7491cdf
MD5 93e29e2b007444ce4f79d054dad559b3
BLAKE2b-256 c8aecaf88b359fe68bcaf211cd6339ca2d0a941b4927aa3f71b9f8d113a3c768

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.84.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 757.7 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.84.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1641fbf8532ee820151de78422015767c7a4e667c3a6e41e52dda27880aed8c1
MD5 72dbdc0a6988a9cde0f20f1b4c7b5dbb
BLAKE2b-256 f20a3a735f1c01c88ca7c8bbd1580fe0260651176fccf5ecd53ff02be942f230

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 fa8cc72802f600229239827216752b5029cac60102e5c951c1a889180f144b5b
MD5 5b4ea1a8461721b4bc6d997b693b23dd
BLAKE2b-256 09a27af7acb6ef69098624e40c507240e7726dee1be5aa0738937fad8f625d8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 af659badc194f9ce9dbcc969f9dbe835050ce37ae7e48c363d95fdad14429db8
MD5 a7b5eb659731e1df862520df079fa7df
BLAKE2b-256 9cb719f660315e8bad53425898428a41a9a1111663b3d6f3cca73db21587f2cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 80f43141c4a3cb789ac82350e67504b690e084508f031f7a18df3a7580ecac2b
MD5 af2addf2bc6ea00c2b02fbdcb460355b
BLAKE2b-256 ff561afbd9a39b9843f275ac57443a2fb6fb05998e5052c8019f00e756adf3af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 386b3a4e682c8bad931db03b480bd944d085da65ee65aaa4cb0fd471f79724c9
MD5 48b9ce4d307c77f4d0fb104a90e042b4
BLAKE2b-256 f16cc9cf5ce32a4ba786edc03d605d7106d9d110b4451d17128f20ea783156aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a8294eb427874d195f873d3cfbf6f0b9cb7ae0725e8ee4dfb5bb39ffe08c34df
MD5 155d4e014d28c8135ecbd3d1d6be643e
BLAKE2b-256 c0606cfe934fb9dcbadcb3f127ff5378404203a8c8bd3788637b4fa2001b161b

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