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-2.2.2.tar.gz (57.0 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-2.2.2-py3-none-win_amd64.whl (992.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-2.2.2-py3-none-manylinux_2_39_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-2.2.2-py3-none-manylinux_2_35_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-2.2.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_complex128-2.2.2.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_complex128-2.2.2.tar.gz
Algorithm Hash digest
SHA256 1946aacf0d3a7de4ceb1b4a49a3d4102303104d835af00f4dbac763312541529
MD5 014a8ea02363a76d1e16091af31b9f91
BLAKE2b-256 bf82dd3cd826c0b8efadf7e677b53f3b153f611398412b4284511bfd2f76ed89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e1eadc58849eb3c8a3c050231acc44d73380b9a09fce6af3cf88a09e8e9b2fee
MD5 496eff0edda0480835cf962b7812415b
BLAKE2b-256 19cb7919c1ce8a3bbbf6dc77e2e48624f62fa39f4a83d52ea1e1baa20a47e8ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b845ea2793d5a8f9604a0c04ccf256af414e29ac8ea59e325a2e45e1705f6b40
MD5 72de42ff5ac873d053f9c651270771f9
BLAKE2b-256 c4f5705e7f4b66625b45130d538c36646e2fb82a37b4411e0a294a29ddfd55cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 daf4e6ca24d68f8596f4c1fad63ad2e19349f0d936cce245e188cfef125d151f
MD5 63f48d020be6cf0dedd861dccc3451ef
BLAKE2b-256 6bef82a4f31607f6f8c416a588c92bc47dd7cf563cc2e32b56a51e628bfa2d61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1697deea3dbb1ff39d9b8260d982eb2acded13129fb7da05e88a73b3ffa65e8c
MD5 a77f6218e51eb5b3f2f4f520ea2d014e
BLAKE2b-256 99ac1d80443aa3c13d20fce9bb9c94d8ed3faee35b339eb59599fcd8a199d923

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 205e6277e69e2d2c136085dedf14d55b439668e6b478b7681e07cd6978108d6c
MD5 cfa11d0a1ef0843ac62e59878241835a
BLAKE2b-256 ce2908b5fe2883feb53a632244b16dc381f2ac69998d308a704ef6690263c02e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-2.2.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f1b5640118c3cf7b5ff2696ea4781f7972a52834d10cbff2f4ae26a05a100a82
MD5 913ef534c66bfb5a8cb6a9ea78367516
BLAKE2b-256 5fe49db11d2dc337d1087247a44c93ae823ac58af3eea65b93290ec8ac4cf978

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