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.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_complex128-1.78.4-py3-none-win_amd64.whl (841.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-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_complex128-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_complex128-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_complex128-1.78.4-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_cpu_complex128-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_complex128-1.78.4.tar.gz
Algorithm Hash digest
SHA256 88a5dcd6c851fbe93b895fd56d0b9c3ebf8c479de99c51ebd49f86f205884a8c
MD5 cf2a49f03b5621f1d335eb9372c1a165
BLAKE2b-256 f3637edf3658962b84b2f18d6e3f21109f6bce33399c1e07d6b75b4b41668db5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d6e01b42d12bf38ee9dc43d52050ca84eeeb4087a91ade03dc1162c1f3097151
MD5 4116acc44857514a74cdbc540c243e10
BLAKE2b-256 aefb50ac820a9ee9c9380084e5be1199be074f546eaa375c4d1d3a4d9b8b6ab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 c73ddd4c46f0af1c6cd14dab0dc3f9df08794f73427c89be419bfd6e81738538
MD5 f9454ecf94a861daa4f4a81d90533513
BLAKE2b-256 919c0f50ff5e4938a5a930e1b4c7c8b3a8292751d3c9a16cb2501ccb76c35436

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 1739fb694edf70bd2c88d6a47fb3b60298b1369c16bcb915f99f4d71012fddaf
MD5 370a1bd10ce9a263182a0d6b9ed472b3
BLAKE2b-256 0c786091617a374cf38ed365eb910cd0fc3a232cb836711e4d0fe82a24b4dbb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 15de5cb25b2e93593c49c9c34d4d0fe581b2980fb5151965360d3e4c185b10d5
MD5 7cb1248b45d28cf8c454fbcc9c376a53
BLAKE2b-256 344c45ca54f3e0d3e2766bc29a2e8157fcc4eb2b17d7524f2ed6b58502534f4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 69337a91eeaa2165ed0ce73c998bed5e545aaa24c2145b73913f27f3dc31fb0d
MD5 2f5bc9bf4691d953d7b5ddffcbbca4e9
BLAKE2b-256 d49ca5a0961aaf6f3252ab080799f3d8894da054f6941c3f5c2377f1638dcb73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 900544bc0ad2f1d0b34edcfd1d9b5b4118f5e418825676dd7c111ec9e68c0231
MD5 021094101d290399734570be8a3dd7c2
BLAKE2b-256 8b71e300b9ac5bd63f05927f40f7d4af2162a2d9b2330df24434ba896f7c508b

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