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.68.1.tar.gz (49.6 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.68.1-py3-none-win_amd64.whl (918.3 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.68.1-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.68.1-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.68.1-py3-none-macosx_15_0_arm64.whl (1.8 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.68.1-py3-none-macosx_14_0_arm64.whl (1.8 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_complex128-1.68.1-py3-none-macosx_13_0_x86_64.whl (2.0 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pyqrack_complex128-1.68.1.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.68.1.tar.gz
  • Upload date:
  • Size: 49.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyqrack_complex128-1.68.1.tar.gz
Algorithm Hash digest
SHA256 e9a3809da41d872c40a733c196fae965aaa13c107b7c1ef9489aa7b2e3c762cd
MD5 00c304cea7d7ef9710bcba5d64a5a327
BLAKE2b-256 c6b6956fc93be4a1acbc390e2e9f62274230dd39650bb14f82260292098a3fe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 67e110373658f34d0fffb12ac63a821feb9d4f7538dbda7ac0caa4ddac2a7174
MD5 dea31a9fdbf170033651e3131dd5b660
BLAKE2b-256 27f3f91472a599790446d58b6eafab13a8e12541c9dfafd985fb9a300446e01f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1fba583ce78d0acef2ba3cd62613bbc97079abadab40887b3c08720f8d29af15
MD5 5e068b77b6b1d805ac2d09bd0adeaff5
BLAKE2b-256 d4ab4be535c18137d5f2884cb3dc0a310965c4fd4c4f307c450c546fbbe4a185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 cda853dd8dc5bfb997735d66bde8a4ef3003eb38c74559ff851ee6ae5787c818
MD5 4810619db9d8a00508703e3b65f1c625
BLAKE2b-256 5b274bdbe67c128af47fb3a4847f4efa7637a15a4d219cc42296e156905f3b7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 75d50f4a6ea92d62190c2a94d7ea25cccc35682e496e883324ad325d48183ab3
MD5 cc1c84f154e634b9138c61602643e1e2
BLAKE2b-256 b95cd3ef0d2b0541235022d0ceec1265304477686b618d68173fd57c7e680e68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0c2d1f914148cd722b08856f6963d4cc5448dd27c90cca614a3154f04bbc8e55
MD5 4501526c468373c71bcdfb81a0659870
BLAKE2b-256 4424e940c0a7ac997e0a21c4f3573a75c27aa839ca944eb3d54154f2bba60638

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.68.1-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.68.1-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a70c0142fcd5cee6c4a74bb37949a6b63f3d7df3404a868482833d4e25edd743
MD5 f0e4aa0f27269984dafa728a5ee35be3
BLAKE2b-256 2cf9e870b269266adbbc381458715769bfa2da8f8a17bd90a280a9a01da7f5d7

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