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.

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.58.8.tar.gz (48.8 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.58.8-py3-none-win_amd64.whl (713.7 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.58.8-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.58.8.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.58.8.tar.gz
  • Upload date:
  • Size: 48.8 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.58.8.tar.gz
Algorithm Hash digest
SHA256 cbc1bb87b5b23bcbfd30fba3c05957e9646ce44abb551daa839a5a3b576e3e5f
MD5 1726bcc9603865689108175b4cc85fc7
BLAKE2b-256 3c8dfcc098b8d3c02bb65caa3297df1f1de30983eae20db2ddd3e3302217507a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.58.8-py3-none-win_amd64.whl
  • Upload date:
  • Size: 713.7 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.58.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 80e543a9561728442b99e4e383531dddd15b37f3ad44ee44c1b73bcfe7bfa404
MD5 df345d6f344e9a8cdef5cc7ca1971155
BLAKE2b-256 6befd7cc2e6546dc1e0e31d7775da318deabe24eb91e79cb5609b7e6969eda07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.58.8-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d9442f2437570f7d5ba0f21e4ce9f9f7d6ae2b52f011a34f551a078779a236a1
MD5 02ba00f4121b60bd97d4444c86d4a832
BLAKE2b-256 38f267435a651096d01510c5f8555c46c197f2dd36ead5bf094adde26a51ba86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.58.8-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 490bd9283e2c97779aeccbfe5295ed2c8146004bceee5b9e12a9d888a3cd5ac2
MD5 d89272257e0801cecf1497c100c6e183
BLAKE2b-256 2ab984003cff9bf0fb2a02c25a509f9d373fc3c9870fbcdb4a1465e648b6e582

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.58.8-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e60fd4021a10d9cb34ce766853bd667ec9eb7a73f74a0980346e118626890797
MD5 1d1a7ff29ea172f101cd4979932c6e88
BLAKE2b-256 cf7206314ce568f7a967e286bfdcb595aa708e5c1f9227f16d3a14d24bc9f3ec

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