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.80.7.tar.gz (51.8 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.80.7-py3-none-win_amd64.whl (841.0 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.80.7-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.80.7-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.80.7-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.80.7-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.80.7.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.80.7.tar.gz
  • Upload date:
  • Size: 51.8 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.80.7.tar.gz
Algorithm Hash digest
SHA256 9293f140cc27a66f906b308decec2e068c6790ad7116592534f4b5d980f265cd
MD5 695cb5ff694022ff5f762d9b241df435
BLAKE2b-256 ad856f96351a525509df65d4d5d084653363a3274550240895b68e5de03af7b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 bd2ae7e9fccc1c95dd1a2f86d5af88bea46cc6186c439af0fc01156413c07ade
MD5 f0275505e0f9cebca6a7fad5a788cadd
BLAKE2b-256 511d56f4a65d33e4849546fb752cfeb5de605d35f3a8e4bb39fd58ac6bec794a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e93a078f91df1a427600a0256b4b30252ebae642a8bff939a4d42033fbc18b15
MD5 42bbad0fe2b9e5789f8434c85c101966
BLAKE2b-256 301ff39f6f43ac326c8256937c5f8f73d2d8ee68023773f41b439915499fb5ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 888e9403dbf5ce9269c435f06562744943e202f7c665f45df27032abfb609103
MD5 b3328fc765c31f843ee419d19b13ad43
BLAKE2b-256 d6dd44272b65fe1fd975b6d5d7b41281c184006fe74c96b128f3c1a65045334a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d000953899f20e59648134acc2fc0f0f4cfc702b277588010215e436725f31bc
MD5 b56da0eaa6a9855f090313a0cf2ce26e
BLAKE2b-256 8034d77e60707265cb0ba0e2fcfbef253563b4940d8abbfdc0c44df2869562df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 41ecabfb9cdafabb1f42631199a75abe8d699e56a94d427310c5817a23be4f24
MD5 5cfd2281e37a0004087326f4def083a4
BLAKE2b-256 31182b2c56c546da075e08076aed658de7eec3d530e99d0b609416d607d8d679

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.7-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3aee40342cfba56faffaafb13c911354b3007f86ddbcf41e5e30dd84b8640889
MD5 ecaf10a1ab0c425ed420cbb831bf6c8b
BLAKE2b-256 b059d40afba3779eb5be0a4567a27e02b0fd6c36d6f5294ad15dadc898f8cfd1

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