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

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.84.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.84.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.84.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.84.2-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.2.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-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_complex128-1.84.2.tar.gz
Algorithm Hash digest
SHA256 959fd623134f5b1781893c3bfd7eece05833ed8b443f5f38b5192ed77ff46852
MD5 2af925b967b2f2bae91ca5c43a66a8ba
BLAKE2b-256 45a033d1397fe6ce8c1001907e01b38711448c10ae3270f483816a0b0ffdbb84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4f304060c01eaef9a811c2ec59d61b3a717d89ecef795dc25ce3e29d9e0531d7
MD5 de95483c9aa55b173971dd7d7ca15e52
BLAKE2b-256 f321108bb94bfc58a7fa5b9f5ce9a31fd9b96f1a1d8a113993b0b70514addba4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 47cbb6969f6e8f4fb057b5897d6c9c33cb0e08e77099bb542719fa0bf02536cd
MD5 228b49b2058dc095dec300201dd4d8d7
BLAKE2b-256 6a2e786337454dc6a35f100d13622a0524bcea10b952a6aee149452069408509

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 b14418fca5eb33204fb1de964a7afe12275c56bb663892b531b79eef22e524b7
MD5 f331819b214a0242b9c86312532254ee
BLAKE2b-256 a4a9d82aa56db8fd77cdead71a91afc1f68605b44827a5a43c49ec7da2dc4e75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 dcababb26f0a4d79b71741a14e600a414216ee67e64dec1ba328de24f737655f
MD5 bf6d9897c5821169ae4f9b7d35b247c4
BLAKE2b-256 9efa45fe5e1c7f42152a406ec6088d798bb27a4a64923e7cb3d3f8d02cef707f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d74f716e3650b1541e9731b96595dc6ad5589636ea83aedba181e3905cf02590
MD5 39e326da70ed4766c02f0d0c8b88bb9f
BLAKE2b-256 ccc724d580add18c741a0473f8693fa6520099ff606a90aded68529c93967cca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3e5d7e985110606f27352c238ab89a8646446d6fb67eb065279b6304786a0f93
MD5 aa5e2a58188ebb2d2fbfd904946f280d
BLAKE2b-256 0871b50d80f9e0a0fd346ba808a97c701a98fd886c60606dfb178734f83792b8

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