Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11/OpenCL Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

Note: You must also install OpenCL to use this version of Qrack. (There are also CPU-only and CUDA version.)

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

If you use an integrated graphics accelerator, like the Intel HD, setting environment variable PYQRACK_HOST_POINTER_DEFAULT_ON=1 (or to any "truthy" value) will automatically set the default of isHostPointer option of QrackSimulator to True, to engage "zero-copy" mode by default.

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_complex128-1.84.9.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_complex128-1.84.9-py3-none-win_amd64.whl (1.0 MB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.84.9-py3-none-manylinux_2_39_x86_64.whl (3.5 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.84.9-py3-none-manylinux_2_35_x86_64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.84.9-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_complex128-1.84.9-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.84.9-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file pyqrack_complex128-1.84.9.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.84.9.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_complex128-1.84.9.tar.gz
Algorithm Hash digest
SHA256 f1fa46515969a5f8e8709c44c695d595752d0e26d045262dd02c88d5e9e3bb49
MD5 5226297aed0d6f7f765f1ee85f8d9ba1
BLAKE2b-256 c2977ea15d09b3a910b4f2285bd76b405ab8a5ccac4ca88ba9d960cabebda7aa

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e6d75b4fae196aad83e22fd1ba9947fae194cea27c4eccc29bf6e64e2aa7dfd2
MD5 03cbabe68c00983323cf0b53627c380b
BLAKE2b-256 c8a76a4d3f55ae0422ec3585ad3df8473ac51b7294e0d3f869ed85e004beffd7

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1fce26b20be71b5c60a0b4c7fe399532ab7c9a879fbef28ad3db67132523d4dd
MD5 45c2f03d3248244015d53c5610fa4cf5
BLAKE2b-256 16132efe4e1cc03069e47513f8487c08156372c36ab92d298f4b47703cc04ded

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c477be13a54ab5b21c6e27899b99655382c3eae423a12386c3ceb901e573461c
MD5 3820d12bcdf678727813580097f4be8f
BLAKE2b-256 456001aebfa59a6efaf80daa4ceb51f8a7fabbeae06457fbb22be377f4dad0b9

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fd4f7fe689facd019baedba18353e95eae17bf87c03df0a14aa313f9a3ac6f50
MD5 709c25105d7a49366d1e1a4ebf080f7c
BLAKE2b-256 6540618072c8f38d7104ef19f908e37fb5bb88a635bb3d2271597bf676b49347

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d586378efb00aa69e5801ff199e972a6d92cd9ed921d9fcf2c0e465c031aa23b
MD5 bf9b5459edba21e73dc645f02662a68a
BLAKE2b-256 03f27d88423241affa7087e3ec2c16d59f9b644186f4b6b7e7e3d36ab0e6b4be

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.84.9-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.9-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 053fad1f3ebfd1e7ec772f9f71c5259005c40a46a2fffa15d728bc3e2fc60e7a
MD5 49df0a426ff4ab53275a36a17a7413f4
BLAKE2b-256 f3e34b78a2b09394ae51676bc9d764065130aa8bb110bde03a72332661e524f9

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