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.65.4.tar.gz (49.1 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.65.4-py3-none-win_amd64.whl (902.0 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.65.4-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.65.4-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.65.4-py3-none-macosx_15_0_arm64.whl (1.7 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.65.4-py3-none-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.65.4-py3-none-macosx_13_0_x86_64.whl (2.0 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_complex128-1.65.4.tar.gz
  • Upload date:
  • Size: 49.1 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.65.4.tar.gz
Algorithm Hash digest
SHA256 f6cd8a577f33c034c25c8e9ef422dde19644715ab97e5e7524bd63ef7da7a698
MD5 de2e3928312f89628fb857b4e9333bcc
BLAKE2b-256 1833eb7157324ba9867107a416d66a2284188c75d975a7695b9eb37a39718e76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 58ea4c0cf6ff959b43637bfb7d87959472166cca80b99abbc0ca0aa141a77560
MD5 899a3522ce6107b8d268893b76fae03e
BLAKE2b-256 3f0437d79bc917122ac731d391a560db8a5502c7ba810453ef525d646295fc6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 512b1f330c7920ff8aac71697e021c496b7bdece65c8da97b5fc3c95fd9042cd
MD5 75117b453c1710df9d652a14b5eccc56
BLAKE2b-256 923a78a89442d1cc9abb56f6c50076b727a2f9f7e7681bae97a3f1d33dd5ac05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 ce45a8789168798034d0e3b4a4854d39d9eacb2144eda99d45dc7574277a587d
MD5 d8b48f8cec57d831e342cb74c8536b48
BLAKE2b-256 05c6525889e1262ece01a118861687475a1db24936cbe2c5b8a77639d9232df1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 483e296b4b600748e25ccf9cd38c4c213db7a5fcdf6ab6c9589e67fb40580d88
MD5 5eb7400112fa47a331557c1de69b7ba7
BLAKE2b-256 43d5762b7c58cd53c7f3ca0013a35cb718936215d56c2140462a223a4f7be791

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7c8b674dc7a0664291a171804dea438b2081a7dcf7af84215137006bcdfc7afb
MD5 1485e51e7e4340d5618eb73c4ed7a44b
BLAKE2b-256 5b4ff41b6f765715a01bc480a7e5bd23dd85c9301491a10e562299caa535ba8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.65.4-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8d581314b3c70d95e2f2cb67f0d730b0bde00582ba0bb7132631480be15079df
MD5 3bf433b3f2e05e9f9a4700c5ed74c694
BLAKE2b-256 ba7117e68c727c4095ae773197bd8709300818d7ec6c0dea84631781f789c950

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