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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.83.0-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.83.0.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.83.0.tar.gz
  • Upload date:
  • Size: 51.9 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.83.0.tar.gz
Algorithm Hash digest
SHA256 7db54d188672da54454a4f536bb66dfd57d548bc2ea715581565bb1579ba16d5
MD5 a6180f8b4dcf06e07830d502a73f662f
BLAKE2b-256 dd037bfa01f304c487669548bad11c85ec8fd10997582e06a0ec53580303e111

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 fbfc5583a6f57a8feaf16203a6abd7eac1c6a085a2b0077a7df17a1f095d89d8
MD5 b8ba1e6330093cbd1e747c0b18ecea20
BLAKE2b-256 0c0e5b3ca8769e0b96bcf014754a52d23c2ef751feb7784027d16c19525c85c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9f49b037692caf272ff9823cd2f2668f5d17572585ca660a00748fcdc2e7b740
MD5 ffb214a64937188e58446d72179baaab
BLAKE2b-256 db4fdef63220396120b31183fb2c403d4a327e693c3b5fecdaadae6c31dbfea6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6bdd2e8cd5db9b25c99e22d1141b085f2fc0d2594bb4ac47176db325b20ebb65
MD5 79e23ad5baae313a23ae670460cae23a
BLAKE2b-256 d735be28cf7f9f3a467e5bab3ddb552da796e630da672cae0a8cf36241f652dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d913f5f5a8ab3d1f56b68f0070d9d750cb85977dd8a521f13e917e22a4017635
MD5 89cb26d5b205a5b7d4b6441100c50066
BLAKE2b-256 47ec399a6215f401f0ab9e0d4d278c2a4490d943e86ced0610aa3114c9a9d8f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 152125cf6ba66a7536f0028bf2c726a0dc5a73ddd8bf23997b5b07020c334bc3
MD5 a5a656cff4cbad7d1e43e04f4b2638a4
BLAKE2b-256 b5117f1ec187f09bcaf7df2ca8f0ac606c6e62b084a586099740bfc319bc10fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.83.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9756a288a9b36ef4ab5d27c54cd1ba02e97b0bde51f557549831d3316f3f7cf4
MD5 7d76ef3cfc45bd49b44185c1d6740c25
BLAKE2b-256 0c5b65d32db80c1f2626942c9cf197c3f3425d40aee562733b7bf499cf3febd2

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