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.5.tar.gz (52.2 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.78.5-py3-none-win_amd64.whl (841.1 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.78.5-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.5.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.78.5.tar.gz
  • Upload date:
  • Size: 52.2 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.78.5.tar.gz
Algorithm Hash digest
SHA256 002091bafc551eb853ecc815689bbd43c2a8fad4aa607ac8304015219ec62d82
MD5 531748a4a0c2a005b0e7a3e272b185a5
BLAKE2b-256 db0faf382a5afaf3a886a6a50d01d7902e10aa7a9973241bb04a6eba2fb95c6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d45be176e7188dd9774b81509772454f057101cdd3f269e27988a98534c62766
MD5 82b43b0155246d63af046f0492d19e29
BLAKE2b-256 e3e4aaccdb25977c28bd10851f79e04460a05bcc1825765ceb78acfebc9b6c69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f19570250b53b2811b1b1e5a60a7b6847e97cb484b467ff8f909e1f56c2bc825
MD5 aca0ef2f79be4b1f82a3b6056170643f
BLAKE2b-256 f1fbc1fe56def7bdf24f4e647280a031f433b53b2e584888f1b7e259c9d6c534

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 7e43f50adcc464ec7cddbcf33badb6b9a85dff7a144ab4cf85ff49f9d4e65d9c
MD5 9d47e8d6397596cfbc87688c920fee09
BLAKE2b-256 fc306e142ea1d4ac43fda7f72cfaf34d75185d89ed0ce48386f7dafdb8183215

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 38d2e33264e1c17ea94ecd1f386643d17b2ce3502544ca0a6bccaee70c0ac15b
MD5 bcd6b4fe50e86ff2b37b43a905d8cc17
BLAKE2b-256 68f83d66533c9a68b06d7f3dad28e291a68db012f89a930e98a9c5d4aad45812

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 06d882b65d82f7bba66909aff1f263489994b25821907fee6b39e09937775e31
MD5 15ba0760fc0102242f21ad15ae88b5e8
BLAKE2b-256 8ee84bfaeae09b4e3a0f75a183c5ddf8cc9242b79d286cf4c26f8cd301e9bd49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.78.5-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9609816f32837baef8af72120c9a166467fe554ed7b15636586095711238bdab
MD5 cf104197f70b95e07e7f81d7a3293da1
BLAKE2b-256 febc5c9cc0be5f3287b8d116c99cc19c00b687bf602ae6b88ef5243beab49897

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