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.61.1.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.61.1-py3-none-win_amd64.whl (901.0 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.61.1-py3-none-macosx_13_0_x86_64.whl (1.9 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_complex128-1.61.1.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.61.1.tar.gz
Algorithm Hash digest
SHA256 f7fe9021a8bf063aa5586bac36e7c42199ca6b223dc0021a48e18e17b7af8e8b
MD5 0c2f9cef50622999a78490deb6e39cc5
BLAKE2b-256 201e53db9f6448b0b844f655470188f58a6803c3d43ace25f46d88c6a676bb3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ca9b047d7b9d4c12d5012f5dd2257e62cfee2ab3f74de5112462818938731cfc
MD5 1ee7b70571a002f434acb154fcef8840
BLAKE2b-256 91cc972dddc76a39373977f7bfbd92668e418efdea5570f251694bce322bcb44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f323af18931f0ee0ab6a97c5f77f494fee79a78a28c9ff871fdf7309368aa5b7
MD5 f8a6d61712855d6268ad29390ae4a149
BLAKE2b-256 ca6d576867dee65ccb664c65ebbd811b3883511b4b64c7b271add02461384610

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 5f708f556f956964a210316d83ee06fa72b734b3c38fcda65cf2901d1c7a5eff
MD5 6cdfdfde48dd2fecdea5a84cf2b1b510
BLAKE2b-256 3956c8a5a0f5a9f2949d50045d12272e160ae86a7456cbc35d71a94dccbdaf2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b26d21cce487767aa9127351b6badceb666b67c9c54f032a7a8442219c1599cf
MD5 52ba70b50e6dc38adb13c5229c82afb8
BLAKE2b-256 336295043acfdf7a3ca8d62f52d8292558e5c423d57fe8e9dd06037d7d053f7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cdc0197a38ba438b0582c25664c2fddd6d9740525fefec9a47553c83deb85bed
MD5 62afb0427c7076432b64c1378541de56
BLAKE2b-256 a5e92e3c08a3879dcb124df5bdc61f10dfb8c90bd50b28f989990dc09ce74fdc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.61.1-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 004a209e37b8ed3d1135d6d2619e4b7665b66d5c86fba094a93b9f718dbb277d
MD5 e1086d4243622dafd0a55e3452a7b317
BLAKE2b-256 c66048316e54a32cb8146cfd2815a13f1075e4c574141d5c729d027c4e232cb5

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