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.70.2.tar.gz (49.5 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.70.2-py3-none-win_amd64.whl (1.0 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.70.2-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.70.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_complex128-1.70.2.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.70.2.tar.gz
  • Upload date:
  • Size: 49.5 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.70.2.tar.gz
Algorithm Hash digest
SHA256 7e6155275225712a1d99042edb6f612297f580cff05b42078e371c24603bc77b
MD5 463a066aba42591d6d862f09f2594d11
BLAKE2b-256 60a9a0226277273b9a798acdc88ca05122aad0e80ea85dc8030d5921cf80d3b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 81a21ebc256fd61f9265b3a3819f0fc4251c7cecd22492bfe1328f2a8ede1d9b
MD5 93a83e2f9260c820ddc0fb967ca0798c
BLAKE2b-256 0ac97390102c48c68f2046a1f28ebe6012c865cbf64f85b4f3a160734c030b31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9766493cce0a7fc388bde398c1bea398d93c9ee32905c47eb10daac4b029cc9e
MD5 a318c231fc9097026a604aecd21ceb29
BLAKE2b-256 bb6839053c5d2efce13f94ed24cb9412cc16db1286a7d26e970d343c765bab5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 e2516e93184fca807247b85bd20ad78d2b8e386371b8acf2c4a54e0da99d3b74
MD5 25b90bd457ba58990e86af97d5b85c43
BLAKE2b-256 7407b654dd2eec701378bc6f03abc57045f3c8e720a9b93671e1a461b861d821

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 15720525bb24747021a7d80b686214c6782bf843dd14f3a7e40b2a9380fe970a
MD5 e16a4f1e9d78fa9febaa122fb6035fd9
BLAKE2b-256 3c99e578a9959a3db6a1ef6b653be7c0f256dc87d8b25fe3c4c94d079ee0d4f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1c1f385c394376b08452bd12279e8ed02ab71e7080b05f7c3a46bc6264175ffe
MD5 2cd41ea8f72fa993a20e1594227a5af9
BLAKE2b-256 2068aa7751f9af2fa64c9329abfec81d8797557ac8e903bf02da05466d990bb7

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.70.2-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.70.2-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 806011f05b61af0ead85d141ea81c80c4e57e38b74b17a83b530353a723b43a8
MD5 c17f32e460543da397014b4ca28cffd3
BLAKE2b-256 f18ee488793d42fa3500668d117d82d42787a3e19fdc4af7c8862ab990d2c535

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