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.)

<<<<<<< HEAD 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 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 installing from source, it doesn't matter whether you use pyqrack or pyqrack-cpu, because the build version of C++ Qrack you intend to use must already be installed locally.)

Note, if building from source: You must build and install unitaryfund/qrack to build the main branch from source. CI/CD builds wheels that contain pre-compiled Qrack binaries, and that is the form published on PyPi. You must also install OpenCL.

main

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, 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.34.5.tar.gz (34.9 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.34.5-py3-none-win_amd64.whl (678.5 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.34.5-py3-none-manylinux_2_39_x86_64.whl (2.2 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.34.5-py3-none-manylinux_2_35_x86_64.whl (2.2 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.34.5-py3-none-manylinux_2_31_x86_64.whl (2.1 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ x86-64

pyqrack_cpu-1.34.5-py3-none-macosx_13_0_x86_64.whl (1.7 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pyqrack_cpu-1.34.5.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.34.5.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for pyqrack_cpu-1.34.5.tar.gz
Algorithm Hash digest
SHA256 ac6a438d31f38039acfcf126a5ba734ff2bcff412e991f8e63e952fc5d829030
MD5 8e27784459f3b52fafa7efa2fa48b2c1
BLAKE2b-256 73e247fd050c72b1297162b658db311c26640bb6a994873bbe5fe64e7c13e3aa

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.34.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b924ee9bcc3a7b0520caca20d206cd063693545837a50949b3e0c5ddc08eb4dc
MD5 3cc60488b02a0ebd167fb9807c457fcd
BLAKE2b-256 f2da0a1f269c1836c89eeaa12f432c75c299e9f0d100e1fe2bb56dc681cfdbad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.34.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9dc41ca5307116805eb92d8524b8366df383cefb8477c443f984272e89f8192a
MD5 bcd94f4d49bc9ef58cd0b02d4c3875f1
BLAKE2b-256 243fa39c3da640d244652dace00cd1043f02ae37f0cc588b2c08132f302b232f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.34.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 62bea8a60f2b5d5be1f56a799cb2fc6c54d3450ae805851facf3a04d819d7d30
MD5 4db898d04050ebdc1ff4fe231ac8fcf4
BLAKE2b-256 530d9649512260e3e8adadf5b800ba0fb0b1ef8e04123b2af167c69a9e7719e7

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.34.5-py3-none-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.34.5-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 a4c06a1af1c51a16e87c69851899bb00b2068a08939662857c2c2cf6d7d8cfb5
MD5 4970a3ba3d912e973d70717c2126a811
BLAKE2b-256 28b2f75c5047eccd4b3b7eaaee5bc47fc722403e9198bf2bb399fa7107999d83

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.34.5-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.34.5-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 84aef4053ecf2197c1614f067c23afbc9a30e5719eff01ba2583e968f18adfc2
MD5 500fbc1db97839bac9fbb1801d148c09
BLAKE2b-256 bb4493267a811ade3b6f87d680f622f950dfdadd1a436bbc0ae6d1856468152d

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