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-2.0.2.tar.gz (56.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack-2.0.2-py3-none-win_amd64.whl (995.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack-2.0.2-py3-none-manylinux_2_39_x86_64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack-2.0.2-py3-none-manylinux_2_35_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack-2.0.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack-2.0.2-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack-2.0.2-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-2.0.2.tar.gz.

File metadata

  • Download URL: pyqrack-2.0.2.tar.gz
  • Upload date:
  • Size: 56.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack-2.0.2.tar.gz
Algorithm Hash digest
SHA256 2b1e3b39699c238a4556fcb0267d71138e9ba8401c1782b6095095a758de56d2
MD5 493c0ec28e7d8ecd9acf15ae0a38e340
BLAKE2b-256 dc29cb7055e9832f362d4024509dc84eb29234b80a4a70894c20a410194b649b

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack-2.0.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 995.7 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack-2.0.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0fab5f645dcfa954ac3ec17078940e38c990c44fdfe96367d900b8cd1c61ee96
MD5 a95b1b327831007eb4d05b8e543c0e09
BLAKE2b-256 d7d007007a58cc8269ed8e5a525f1f12fc44640748453d32a6cda1122cdaa0cd

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.0.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 085c39437e97b97dd0a65c49dd97f5bba5c6dc7e65f6d1d92f779935382773a4
MD5 9dd5482df395caf546b5ffcfc7b01219
BLAKE2b-256 a2510ed54a1366d31744a822a82eab5ddfc48badcc48a8d084bf6c296fdb237d

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.0.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 44a0b6b9c19afd561239d50930e90d586901b88d93bff3db0259633a3f4bf552
MD5 b90d3cfc8eebb786b022f1504c9264ad
BLAKE2b-256 d50e4bd505022f9c2bd7beb48ad9d58c5530cc87a2aebe1c5685ff69837dc791

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.0.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c8b19af67c6a890476b0cb2d8b06de07b94be51c3114a5c0b3ead4bf55d4947b
MD5 356bc215706b9e8d7eb8a83c270afeff
BLAKE2b-256 7b92770e95dcef8d7308183346ca93f16fbdd578d0c42883fc769ab08ee36aa1

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack-2.0.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b0e138cd778cf8717fb86d95e795ed9d5438624d905f07fc278d7d9128edadaa
MD5 44f3ec0582b3e8c0c0402bc36acb4fb9
BLAKE2b-256 112ba8930eeb1547038f9f535282800cf8816cbe6755ae9f0224630c87f0b558

See more details on using hashes here.

File details

Details for the file pyqrack-2.0.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack-2.0.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cb7eb1e1c4244111e00b491f8b8768ddc6b8cd995f6369fd3dac910f0d556660
MD5 43fce8ba43071e4edf5d6e63155ffef9
BLAKE2b-256 aac75f315a73659905b54477e6e0bef4cc3ecba93b294f052f591082568791d8

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