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-2.5.1.tar.gz (61.3 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-2.5.1-py3-none-win_amd64.whl (813.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-2.5.1-py3-none-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-2.5.1-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_cpu-2.5.1.tar.gz
  • Upload date:
  • Size: 61.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyqrack_cpu-2.5.1.tar.gz
Algorithm Hash digest
SHA256 6602c66e44bb0d050d5d0e16d00c1640f9317122cebcceb34b584c9e75f28686
MD5 9d1cc85cfc5684314dc9c8b2bfce8a38
BLAKE2b-256 7239f579409ee5646b5c39a4b24839a5d5966e2734f444a371e9b5d32790d9da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-2.5.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 813.4 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f3319424a340bb1a0cffc87d717e1286f25916a32656c8d1188f06a54413b23a
MD5 f2e27e3f0076df090f867e1644036f93
BLAKE2b-256 35c2d97b35f9af27c47cc622191276808fd0aa855ec5cf20472f0841b29f68c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b74616d0a6913a05f98f33555197cb0f0b4c915356189748dc0671d48686f767
MD5 2f8eb1bb098a850a7fbf9329babd7e29
BLAKE2b-256 696dbaa1d0f9c60c721e3ec8986b7204d641be7451f06b990d6f88bf8138ef41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 bddea330928584b8a59ff2cea1af92f1d24350b91aa7740d7f42ecac0e5a0bb3
MD5 e6af19a25496899ba5383f9604257b5d
BLAKE2b-256 fffa4178fbe4a614021821b13a36377875198dec58a8c3b960125e3e0f41c6fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1f6f170da31f9680f04373ad5ed9f332c0b2a5e51067ea75d612ad1498df9e4f
MD5 5e7da6047c87aaeaa74c14a5add2f754
BLAKE2b-256 3b0994a8e5a214fcb5b588d1dae14f76829f365dd3a568b91b69c39b8aca63cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 00955a4d106be9916711c2dc2487ba49055a73de910a63e9998e7c9578dfc92e
MD5 656fb0c1ab9bb973c297e34331b66c6a
BLAKE2b-256 8003baa5ede762f4b02bf2bcf74af73d9d7533fda50d5f6747d8ea1361f29f49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-2.5.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2666e4cff348c61930de279280548983d1a4fa2abc8e914d7c39271061b55a37
MD5 844c35a2ef2269886efc392265cc00e0
BLAKE2b-256 3fd8124ce8f07360d6023f1c4490fe31a7979edfaf264c290180f6d7862dae47

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