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_complex128-1.83.1.tar.gz (52.0 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_complex128-1.83.1-py3-none-win_amd64.whl (843.5 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.83.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_complex128-1.83.1.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1.tar.gz
Algorithm Hash digest
SHA256 f9f493a55751b13163c8288602af2da6dccb9af7fd235c5e6591487308d58157
MD5 c35fbaf234ad7b229f9f79c77cd1fa0a
BLAKE2b-256 0d88d7f64522f413afbeb8009987f06ee48f59786764ef3b448bee92a8d0f49b

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0f520387aeb07db197933305e3613176c4a5483a7ca35fb8a2c6d58db427df5b
MD5 de5a4ef65c0df970103effdeaa1643ff
BLAKE2b-256 69e2dc9d93403b1d24754b6e3d214545a3dafcf696b28805e015c4721dc9dabb

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e893cb0bf6acb09c420e906d7300b327c613768d487994172a85df2290be8071
MD5 8fcd9f0e4c0e2edae0ca85c166dc538d
BLAKE2b-256 b8e1dad5e6acd3d21ab416bdf27dccb6ff51894fbe951a3a2a3811de2e5b4c2d

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 0c2c19d1c9bb99461bafba5522d5e3b776956d4491aa4121200db9414c6d4fb1
MD5 5a028ffe4ae1dacb85b587fcbb857632
BLAKE2b-256 99edfc6b5c3704054b099958438795f78271b1adecf871c7738060d83f8e7cd9

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 2c75e02c95cc7c69adbc4766c22c0bd3acb7dd3fcc2f6506568c09943654ee96
MD5 e5462dc19f8e57eddce77aa712755561
BLAKE2b-256 2f41f5e318c7a73a9e28170909a0536e7e8e6bf663f2ea5d2087b3001e0bd4ee

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 da1745d16eeaa95aae113ab3cc706ba7f2a792860a9a5d75bd354082e5b3260a
MD5 f9b99e1140b8e1fcd6d9e334fc8887e5
BLAKE2b-256 6ea88270bac0f0d8e9279b5333f045521debfe672259794e2b4d3ff37f3d2a69

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.83.1-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.83.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b94dc3a6fd8fdd6421c890e9269ff9f595e55415a2456992c773a50e2a3388b4
MD5 1f02f512d80be032d3a4728356db717c
BLAKE2b-256 179a9a8274d1415b15d576c003c08e28e81499ce08761923fba9ebecabca39ff

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