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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.78.4-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.78.4.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.78.4.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack_complex128-1.78.4.tar.gz
Algorithm Hash digest
SHA256 6436e97dce9a58ce9255469a4f6efec7c2e812f28ef0bf76d51cf76c9c674d5f
MD5 f0eab1a87c77fad93bd2b58ba02860dd
BLAKE2b-256 e95c831d4833db820690443f6ae8df7d466d8c46a59963aae06b18c567f39004

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d0da354d6a00ad03361fa26c1a07e026238fd7be33e507e6163bd801842a5496
MD5 e122508e9990990ffae9b7710b1f0316
BLAKE2b-256 905ba520337de7244141489b2a92e121fc2e905335b71bf06a35523bacfcb5a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2cbfca0fe94e4becdef095f0ccd7757b4b0d74abf8428ccba466b3281961e227
MD5 b13441957ba442292d42c001437fc04c
BLAKE2b-256 2755ae062905eeae9aee23260d36514c208c3f7c6c87a11eb56bbffd5e545a9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 2a5bacba0816a3d983a3de5de81a3d556f97045b9aa52577a80a6f6688a2c724
MD5 d32ddc3eca8bb54aec64fc064e360b6d
BLAKE2b-256 6f064aca931c1d5785d06cfce1be108ae195bbf058fd9f07710bb201be321234

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 696ebdceaa530b729cf497ac043f779cd69a022a4d2833ec20cf4393843b5e83
MD5 314ca5d84d0224bdcbc9807372ed785a
BLAKE2b-256 74696ec7e6fd9aa467f439e5f1de7e5ae0382e7221f1d0469c16972e6d468e1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e591291c285c97b7fb6b2d4de10e0735e64ce5a63a8bc826e30cfbf2130ab421
MD5 1f5f87d9a9f4b3fbd289361ce7b74e26
BLAKE2b-256 28fa4093b3a0f4c3923c2b693af48a59e40ab2adb5ff7119995b92273370d97f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 046c3e252fe71236aee9d9e5ca0aa842acfb50f21548c21fda1a92a3b3406c13
MD5 02cdda2128454cc9b549c6b4cc4b5e47
BLAKE2b-256 eb85f3de1a465cfb5e63d4074b2ffb458a2af4c2da1755c2dac5fa5a69079972

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