Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11 Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

This is the purely CPU-based variant of PyQrack (with module name pyqrack-cpu). This alternate build of PyQrack is provided so that systems that won't use OpenCL or CUDA anyway (such as because they lack any GPUs or other accelerators like the Intel HD) do not need to install the OpenCL library in order to use PyQrack. In this form, both the PyQrack module and the underlying C++ Qrack library are entirely external dependency-free.

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.

(If you installing from source, it doesn't matter whether you use pyqrack or pyqrack-cpu, because the build version of C++ Qrack you intend to use must already be installed locally.)

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."

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, 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_cpu-1.46.2.tar.gz (44.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_cpu-1.46.2-py3-none-win_amd64.whl (708.3 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.46.2-py3-none-manylinux_2_39_x86_64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.46.2-py3-none-manylinux_2_35_x86_64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.46.2-py3-none-macosx_13_0_x86_64.whl (1.8 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

Details for the file pyqrack_cpu-1.46.2.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.46.2.tar.gz
Algorithm Hash digest
SHA256 739f5b3ce620d73cd6ee1ba57789ab138d8bfcbd646bb95b3dfddbaa31ca2928
MD5 63df6c0229d46ce494476dc682851846
BLAKE2b-256 1557baf8d5858725f182779135924a15fab3b2207a139a2aa14141c159480e54

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.46.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack_cpu-1.46.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 708.3 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyqrack_cpu-1.46.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1c305adf5aa98d57393c44834ed78b6094bbc13cbaec32950c36faccf34f232b
MD5 fcb374f25fd55519d2b276bdfca87c01
BLAKE2b-256 06c418375dfb2adedb1a482aeb4a970e4bd6e2a8338a33ff653c655181416eaa

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.46.2-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.46.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9b3a2e01ed2dd81191473b47605f23cc7ed3bed991ded0a917c9785fe8228284
MD5 f678b1458db71fbd030bd96ffe7b1b29
BLAKE2b-256 2bac8b21d7283b0939cd48993a62e4fa1f38419c11799f8761296178084b6e06

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.46.2-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.46.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 f0c597297eb229f60c88669d4be21d44519343cad36aefdbc3679a2bade54d19
MD5 851685023993429916b04b493f3a663a
BLAKE2b-256 23989d6d59824fed2da7ae0f14fbe787fb040766470f65d9b0ccb271f75e954a

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.46.2-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.46.2-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 025e8f903ddaca65fc72985eec16e7b9308cf2c261eb5b153b0bef1b3cf0723a
MD5 171ee917ce386b8e045e94736c56cd81
BLAKE2b-256 bb3f5e6f6a932ed3e995f6916b7ab811c2b5c4e15576ff7f1ab63ba96aaca271

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