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.71.2.tar.gz (49.6 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.71.2-py3-none-win_amd64.whl (845.2 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.71.2-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_cpu_complex128-1.71.2-py3-none-macosx_13_0_x86_64.whl (2.2 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pyqrack_cpu_complex128-1.71.2.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.71.2.tar.gz
  • Upload date:
  • Size: 49.6 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.71.2.tar.gz
Algorithm Hash digest
SHA256 2632f596f4e5fa3eef8d48e718dd76b8a9a63ac10d04181ba94ee655ca8a6911
MD5 f8cc6defebc839c99e4dd2e2e88f6be5
BLAKE2b-256 a470be4e7f7610bcf7e06bf3fdb30639644ba2ebdd9ebea0788e2d9ca638308d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 346462034274ca9d1446e81628abcc038b658803b7427671a88a7f25bc694467
MD5 0c5ae2105495214bee6fdbf33a804b52
BLAKE2b-256 39de2a2d928257a8518d1a7674049ff6d6f73539a01db67d3b28a01da301bfda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 3a9504be1520d0052e480c2183249dd00da2358235f7bb3cb6af413ab8813620
MD5 d7e2043fb44324399c7d5cbf78bee490
BLAKE2b-256 00c59b02b49cb5b35f7244fcdb937020f6fa7a15e34000dc0c6755068c36eacd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 f8ba8607aef91c2381946cb6eebc505674289116fc8eca9b146344ab86b4bf3c
MD5 c11d876b978bb1e7d1ce999afa0f44df
BLAKE2b-256 d00e5c63ae27502a8587d23b83ba93583b5bd0ad31967c809adb9d3d51234926

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8f670586cbb23927643e96b6b24e62d6533c37dc4f22354832b970eef622a642
MD5 a3bd932677cd047692ae539181750a9b
BLAKE2b-256 1757fd9e1e2264ae57b4bfab83ced83aa90f4234461a29514a5e1933aa43e6f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4f1a7071f3c118664371ac4723728c1699fd83d135b2626f5337baa0272d579d
MD5 326bccc550d012b685fa70f9b4b269c8
BLAKE2b-256 91a0b21e49ae6ef375becb2731e139dddf0ece15fe4a85c335bbc545d65251d1

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.71.2-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.71.2-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 612bc3e63fb19f62c323148463eba4a80000cf67f63a476b870e3284b3c45062
MD5 594b94c5b013f4fc557608ef8cd16db5
BLAKE2b-256 889cdebb07efe0f02c84ddb3e6eb01d91f193350b4d2b60c41fec3099f8e3fb4

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