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.3.0.tar.gz (64.4 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.3.0-py3-none-win_amd64.whl (997.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack-2.3.0-py3-none-manylinux_2_39_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

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

File hashes

Hashes for pyqrack-2.3.0.tar.gz
Algorithm Hash digest
SHA256 7d1d93c1d1dc38dbec73a8ca8a0e9efe23f03e70c69e612cfbe99d15c350131c
MD5 91138a649d932e430fa7fd13b0651277
BLAKE2b-256 82bd80701caa6e5d47875c47cb2fb04fe48c8ede44d9e053ea4faac5272019a6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyqrack-2.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 edc2519c7f9a76e3d29ee02090c4c8db24c407c988de7ded35044a93fe19e84f
MD5 3b0af7dc34d6292fc590e9a52026621b
BLAKE2b-256 40e6068abaf638d39882dfa6f821d451cd51339b39730d1d7b574c11861a6f14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack-2.3.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 81dc2e1b7253bdf2c80de89bf36698b453e7a2647734e0233fb2e978aa724731
MD5 179825948ae984add83b5498d996b831
BLAKE2b-256 dbf16107744b810f2c19b6612d385bdb0ecb8acacfbdc0e5b1a289daa563b1b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack-2.3.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 9eade12f4e5f79f64968223c3f9d01ad48a0026b492a97081e36e2f2455d85c9
MD5 598caaddd94a42aeb39d3996f81febb1
BLAKE2b-256 d975beb36f7173535c4d1feb32dce0c13bec7956e124fd6acef6b4da52a3218e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack-2.3.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 6864058cbfd2edbabdb0f5142c554d315d8adc88d6ad12d702381cbfdb4f8d7b
MD5 2d9d87a73a569a9cc3ca0ff8c1eba001
BLAKE2b-256 e56aa8423f0c9d0f17a84451a52ed3aa247383956f41b7443875e33f8d111c96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack-2.3.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b94fa5e2135efcaa4dc350a12cd389cbe132d63244ad022aa3389d5151805b14
MD5 53a8feb8d12bebdf0ba334321ec4f9fc
BLAKE2b-256 b830030b3429366b0b8ad2b97629672cf73708d66bf32f5020f4ddc76ec6d8f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack-2.3.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 eae2bd5f8f626f5fc8c35b26ca9107ba54355a19a5eb3b41bf52dffdd2879e28
MD5 35ffa1370f0c6be42f2fbe22ae5af8e9
BLAKE2b-256 d2a85f15b289f47d9ef3e181f1596571e29e879d4214c68946e72d56424c0794

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