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.80.6.tar.gz (51.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.80.6-py3-none-win_amd64.whl (1.0 MB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.80.6-py3-none-manylinux_2_39_x86_64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.80.6-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.80.6-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: pyqrack_complex128-1.80.6.tar.gz
  • Upload date:
  • Size: 51.8 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.80.6.tar.gz
Algorithm Hash digest
SHA256 beaa8d6f33719bf4fc1a3a86aaa13c1419079d337e28ad34f4d20750d2bb6e1b
MD5 58222761a1490a91e1296f037e910566
BLAKE2b-256 9d1c8db5cea308ee1e37b08a7a3e20fef6e6ee31d3228a4ebd8b8210d17f79ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 830f95794e3984207c5bbe65bec257fc32125341d34d5545e5a92e1b818dba20
MD5 a13c673a232d9396b8bc2fbdcc4c8c8b
BLAKE2b-256 d3444062344c5f53fba314e4141bb65dce7361a8e2bf0b22223289a2349bb67c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a44c78480e915b2c8564c7d45a6694141e602f4425ee571d62f51e2b25f8c0fa
MD5 8d10a6321440f593a89a23b5998a2701
BLAKE2b-256 ee553587be2577cf1948fb993474dfd72e18caccb21da271703b1c6bd7d535a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 4980d1017db1bb0aac31a6bef761bb3f9eb476e58eb3a4a3192eab4b3803c5bb
MD5 7bbdc6c17a41a21bf3cc9c701a929403
BLAKE2b-256 2081a15e5a5a1d68cdc87105f153678d1a41b0f196d9379549af9b197d1f8e73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c717957b6aec56721304e915123aa319962ca7ab49fd1c3d730b36d7a73d971f
MD5 cb659aa0421a4656831cceb48c9b1e35
BLAKE2b-256 0713864b1dc6bc88b088e11cf3f572b2d10a4d61694aceb1a2ca5b994dde1f2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f030a2f707db0ecc1136395c09145b608bcf98e68424c6a7cb27ae4330c3c794
MD5 4c047dda543078e8fb7b5c70b01afe71
BLAKE2b-256 d04413a1e36809194eaf8f630674b8fdd45cdeb63f8e7cdea99e9a070ad0deb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.80.6-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7dd2f843f82967b1217a2db719bd4329bc516f5d9aadb635ddf517253b5c1e6f
MD5 2bb22a7c7275de5b045a6d785f5f1504
BLAKE2b-256 ca5406913dbf67a758bc4891bc1c6f28dd9268e5edab9b84026edeccc37d456a

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