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.72.2.tar.gz (49.7 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.72.2-py3-none-win_amd64.whl (844.2 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_cpu_complex128-1.72.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.72.2.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.72.2.tar.gz
  • Upload date:
  • Size: 49.7 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.72.2.tar.gz
Algorithm Hash digest
SHA256 3d11577e7bcf1cfa69ef65fce3dfe9fc1493314c6bf0d6a9e6f245a15a7d2ada
MD5 f1cc643cf30989f173a1ca70eea6908b
BLAKE2b-256 3d31ee51c21fc29a85176e36e77d70c0af432e9c7d5fcee6fad9fb755cda0be2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 013d0d0f5da01020e407588f33834ddd760e6b7c45ddf6d7b4b1f52e900b6da9
MD5 157af0878fc01c33f86b3b3a88fc7905
BLAKE2b-256 dda109cedf52f4af4c0d28fa9a88d5f01896c9eb874d13d1203176fe0f78fa71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b27f9663ed41899098ff32bdcd73bacb55e50f6e1e01448a5c335c0b0fe536a9
MD5 5b5f847d1d332a291e3b173c2cad299f
BLAKE2b-256 1b8601186eb8efa5318983fc7442cced4695365c0cea073ea202b006dc12cda5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 58bc2b5dd88b77e1a04bd1971b21ebf6476d7bec29f738368593636fffd0c334
MD5 38c178e6df35fdc6c3ea6aa2c8d1d4c2
BLAKE2b-256 5ea691d83b7e7a015d0a1ae102664f3092e143bab805ef75d2eea367bd6d8c66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 340001abef2421f97b7503951885534de389404bf680bea45a4f2532cc9be8b9
MD5 d13608eaf493405a5db8315753482733
BLAKE2b-256 4893f491cea3060ade3dad80f1e4ee8c19a09ecba0332fa929c45153d89e92a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cbae7c376785d894e5f2688878456a1d85ded45445c5a4db1cdee599feea4ec3
MD5 bbbc979553dd4815f22d51e9e8774089
BLAKE2b-256 f455e0e5d3b4b4410383ddac30b01f29707a3e8fa9a38a349d8486a0d59a0dad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.2-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 21f8d3e7c3993879ff3ae10a35afa2ce1628c6986b86b99a2b252edb16f9cec8
MD5 6c18fd7ff74324fd75e9d6022f8dae69
BLAKE2b-256 6beb1b4d26427ccbd4b6c88dc849520291749acfa3f9b9da320a587855f3b0cc

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