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

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.79.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.79.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.79.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.79.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.79.0.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.79.0.tar.gz
  • Upload date:
  • Size: 52.1 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.79.0.tar.gz
Algorithm Hash digest
SHA256 03a761217ded5c718ec7e33b0fc9ee254cdd207b6fe31d29cdf640473ce7ed97
MD5 a20acb950d34792f4ffb868e80605117
BLAKE2b-256 b28a3912a9f577d3f60830b93278a5707594abced0c129f9127461644b0132d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 855ced215fb448d7a06446a69fbd329b3c40b9cfc11ade39c74fa1903f85191a
MD5 ecd1b94b65c0356d859c2c2a0be91cae
BLAKE2b-256 096beefd992230cde5a61bbc884d76f543b913b3e9ca87e72dc9bba8948ea61d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 360850e91c1a5bc78985ea624076c2d626c1fabc3489cd9ec5940aff52cc77f9
MD5 9883b0ea01206083fbe2636b4473eb06
BLAKE2b-256 b1d8532e61aa913ee9e6e86d343f1c3d2adc0f412966520c0dc6de091076c5b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c8f637462898f5b99e8e33389c5842a52318ea5c7713384b4a66392d3d33673b
MD5 641c1dabd06fe56cf9688b9c9ac4dce5
BLAKE2b-256 cf27a5428f0fd7836e62b2c31319193c000b9f544c36a891e8d12e37de4f6529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 27e9ed0c69d797afbc428ec81d38ffce46abc4e2cae0b7f12e8873683d3b0057
MD5 419cb236221da5a8d34cd73b5d80bab4
BLAKE2b-256 cc6e98fce2be22e19bd579953680739f92929e000ad3fc913106212d26d41f66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5c4ddfaf05bb3b35ecf1a60ccad2e7df141229f06ac321f48756965b5c225815
MD5 36873d829cbb6fa9dd97d318016e5261
BLAKE2b-256 08c124fbe157b4a1d00115d07dd6658e652dfb362f9dbaf7f90a2b12653798e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.79.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 31ebcc2b1606dde2714574d8622c020fa9a41f350bbf28dd382ff5e8bc0d41e9
MD5 4ae5b642f8712a5d19c5dd7a60282995
BLAKE2b-256 d4c218a4a193a497e82f1befff78916475f4481eed29b58ce4e8576321786cc6

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