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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.71.1-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.71.1.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.71.1.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.71.1.tar.gz
Algorithm Hash digest
SHA256 8f82b2f59a15055c3b9b656dbe73cbf9ca65084f45adcf89d7921c4c1f3734f2
MD5 281977423e5e0408f98d221da05d7802
BLAKE2b-256 e3e7dd73e6e709d22e50f47f6025abd2166b84f0d096acfe80057f72d3481c78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 85ef1f9fd84c6c24b1a3879191dc70b9814965dc0c7e9a179cfd904523691ea1
MD5 813b274732f07adb12ed69a670992bab
BLAKE2b-256 f40bd5f93332b528324ea92001971a5cc42d4ece9af045b025be8a89c4e9a789

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 14454334130cf5dcbf096c11948bd949a2b5d68eeef160e1bbb7252174aa4e56
MD5 0a1a8d3ccf96fbbae2888e858a0b2f10
BLAKE2b-256 845e2d398312be3d641f8a5fec1b79edc95296d96737088bbfa5f7b6334b4ecd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 0890e983acbd8f78cb9595f65017220a70d7380a736d9f98c17fb048f8f79a12
MD5 e32f63878c5423a9a1c7240040a24e9b
BLAKE2b-256 c70140b7512ec963a5d19122deb1216c124f9680f46ce9d5655405e9da8e50bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4ac269ad57b710fb45627e742a45cb0bb22b817df1b96a4fc08114970b5c74ff
MD5 74480c72eda61c4b35e92e87b6783987
BLAKE2b-256 75b9f915e3e4ba8c22fde1bc38393a81b49b55458b5f7b6f7e2d2d9ae05ac6c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e68ea01247019dd40e467faa833118c248f2ff4c508419afd58b87e7965b864a
MD5 2288eda0222a96963201c7d39207173f
BLAKE2b-256 c278abe0c6fe4ff1b6c4b96f965257573e04cd051b899fc987bc0047f36ba0fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.71.1-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 0a09a4a6e337451c173f7a2cb4b058e1e83229d8afb437de5251b6678eed6103
MD5 2c18ade34d35945ce44ab55dbc4d7002
BLAKE2b-256 80fa92c006195a02e674bfa003952525bada55bb8b7ca747c2aa29a2cd7ff6ce

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