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, 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.58.10.tar.gz (48.8 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.58.10-py3-none-win_amd64.whl (901.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.58.10-py3-none-manylinux_2_39_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.58.10-py3-none-manylinux_2_35_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.58.10-py3-none-macosx_15_0_arm64.whl (1.6 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.58.10-py3-none-macosx_14_0_arm64.whl (1.6 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.58.10-py3-none-macosx_13_0_x86_64.whl (1.8 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_complex128-1.58.10.tar.gz
  • Upload date:
  • Size: 48.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyqrack_complex128-1.58.10.tar.gz
Algorithm Hash digest
SHA256 72376e5a386941a66a472075f1cacaef72ce8a716d39f02f1c3763d10336add6
MD5 bb4ff9c6ebcf49502f91919fd47e0a62
BLAKE2b-256 1ac33c442f2bcea9bbaa88eeb966a4d6cd0ecdcef1afae3cd0656ce1b68ee735

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 544718624f64385ee476cd8913c33239a37d2c4b046c979ca2c56a3515c81845
MD5 9109a707f49f7ea98e52a280dee9d540
BLAKE2b-256 5b3e6dbc5392fb7b5449c16aa027849ea2a22dff6860b0ce1267877ca7a20e56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 8bb77fc8cafe6ebf5212799efee7e2027b1fa6212c6815da0397f0048d7e6a03
MD5 f3bef2d3a523d7b5a02aa9d6a08ccce5
BLAKE2b-256 dd528c53e5bbb462574037411bc04c0a075724a00ae2140e31df39024d598192

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 b0e9610057c72b0b46bd25839ef3428ba7f440b31050ff8376045714ac73ed43
MD5 c2e55ac0deb82689885fa04217959ad6
BLAKE2b-256 aff4795bd045ddaa24f179e92a3a6188b29bf160ae6c8a1206fafbcfb0b5c9b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2594ab99d6ae619504d19acbb16b01dc290b82d959e6b11cab177cc7951b5e76
MD5 4885e8617f0997147cedb0bebe636cd3
BLAKE2b-256 a44a19fe2083b4faed643d5b33119512048a983e86d480efc8bb1a340332c654

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8a7df7002252eb89f9aa70f528900440e472e0267957b2ebfc14e03a5fec3f9e
MD5 8fe7449d54027733d9a01c7ed2cae38e
BLAKE2b-256 1e012488e295a4477e3eee4ab99084ef04eb777627d9b3dd49b5d8ea6352b921

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.58.10-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e21c9c731f8fcecc4e50a55c1bc1608a75355460830243e9083430c7119564f6
MD5 4881b5cefe9dc76baceefcd3285b38d0
BLAKE2b-256 012278d1d1695f8039b76368a3fd14bf846a690e10d0255cc147811d57479616

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