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.78.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-1.78.1-py3-none-win_amd64.whl (754.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.78.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.78.1-py3-none-manylinux_2_35_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.78.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.78.1.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.78.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-1.78.1.tar.gz
Algorithm Hash digest
SHA256 0e8cd198b0b6aeb1efc314fb1fa874a3fa33ea50b7766a9c0ef34fa3f6ff3fee
MD5 9914a4f715166d3a7ff04a622c4c502b
BLAKE2b-256 560450c4218b20a6bd7ed0b7264108464b521c9126e401a3e4a54cf18943be18

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.78.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 754.4 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.78.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 cc119773b2633fd8d52605fec299522ffa1b59add99c182aacbde4aa9c1a742a
MD5 f35b8a303dfc471c69af0d0e2394f021
BLAKE2b-256 bb83732e711dd66108e154cd9cd05ced0f88c254f03267dd6a039a0908f6b393

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 cbd6351e524d54bbffc6ddb839edcb649dfe443074027816f4ba5dee492e7073
MD5 2eead8a2010c43a425671ee6710ced91
BLAKE2b-256 f22f9a198625abd666f3714d4aacdac2b337a473d094886d2f4d2f068f9d0e41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 8f66fbaa3610d765d971922770ee41f334b3e96adda897c40050fb104a2a6643
MD5 18fa6132a516f0f5603cf20f75aca2a8
BLAKE2b-256 5a58d98cee40caa4c376d93b5df2a5e91001a7f1546ea4bb035385a30bccc6eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 116a464c1eae6cd75fb98da817a6b14fe48057bc94dfeba0799aa7282f438835
MD5 e5fa0da4ba13d4736cf2ebfda63e279a
BLAKE2b-256 c2bda1d4b2e20a1acb915eb05fd8578f222fcd67ab98249e9c2e296331875e39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f3814b36488e784717570b9d00530c41c0a59b6032f1c07ba2d4977132fe2b78
MD5 c867dbeef40cc5bbec53caefa948be26
BLAKE2b-256 6a08e079636fd113c39678a5efcde862c6fb47cc8982f05e105229dea0cff56f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.78.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7e083b332866d421592de1fecd438e5c2988cb348867fbb66e83aeb321f42086
MD5 87e6af6501df3bcb122534a0521d8a84
BLAKE2b-256 ce6529ea818e929f9f8bb591b812f4fa128458bdb5d9b092529419e65b82545b

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