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.84.2.tar.gz (51.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.84.2-py3-none-win_amd64.whl (758.2 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.84.2-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.84.2-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.84.2-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.84.2.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.84.2.tar.gz
  • Upload date:
  • Size: 51.9 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.84.2.tar.gz
Algorithm Hash digest
SHA256 cbfa6831ad341576c98d9d9dd47554a641fb6d03700673043e53c5be0f15c377
MD5 f00516adbb389d8182fee938f9d37f3a
BLAKE2b-256 d938a095e96aa1cb751a1e7ca97a8d555b859b1fc37667f0f2f07e72b2719fb1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.84.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 758.2 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.84.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 01e664aa1f5845850fc6b2764afb20c533392920f4987da700ad4f9ad1bea249
MD5 e8ec04b176f3d474a8286081661a2d30
BLAKE2b-256 036dbd5b979ceff9bd9c6c083e72f7fd3dbadee7bed7d3d814c5c34445b95c04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6ccbb8aee6d58e5754e0e55849c9f32e5876ca1af427028778ff1ed51ae866b2
MD5 25285c0a38b1cb6bd2946d01064059e2
BLAKE2b-256 9cd54726d9e8ead755d7f97b5712af269f2c76a604bda43b5c19d0677e995ebc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 cf8ef9d1ba9e5931090c755d39904fbe85cfb38c86b62f86893aac96bba2bd98
MD5 0c63361695ce5c45cb239c5706c3fa9d
BLAKE2b-256 5a7268366afeafc51ea43459e71ff4ed38f34ca5ac70444b71538357a3f31cbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 de646f07d44689835d0fa3b410f04837263cba2be25f1f89606aa710d02fa237
MD5 b1f631b19a8d26634d584f0edfbd6601
BLAKE2b-256 66b64c5e757eb4bf3e477af2841b126b47a83ab5aaa8037bb44fe0497493e514

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d63ec22431259485be59ffec95581622cd46929a9eed49ec8da6affe5f41f0f6
MD5 df1a47b2cdbdc93db919b32af48aca37
BLAKE2b-256 fa12d76aee8c6f067ac35cded77c0276426c9795f1333411d4c4605251e218a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9247f760f2f4dee924eb0942fd26bb6d70850f8c33f463422aa65a6322a691aa
MD5 a04efebeee6b3ad02cf51f057f30ae8a
BLAKE2b-256 b8367844fbef485cab08c889485360b4717af4189646a695bacb6ba72b7e9613

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