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.50.0.tar.gz (46.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_cpu-1.50.0-py3-none-win_amd64.whl (710.1 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.50.0-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.50.0.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.50.0.tar.gz
  • Upload date:
  • Size: 46.6 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.50.0.tar.gz
Algorithm Hash digest
SHA256 cf2b6db1ab4ecfb2dd29249914f93d578e4d717cf0881b26ea3f4443641e4a74
MD5 23f5636fcbff62334a9b50a1bbabf53f
BLAKE2b-256 600d45050810f469259d02ed3bbf55fc83a9e0047586ccbc0a1862de2e2984da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.50.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 710.1 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.50.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8d9e84ee4494b10dccc61db3c79cf2905ebe061156a65deb39a4713cbd927878
MD5 1eee4739d4e59443ff7cc79e3065d45f
BLAKE2b-256 61648e512702b453b0801c17012dd67ec68c004fc4f694bf3e922cb3991db9cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.50.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d065190968e8bdd8c17be213d043f0e1f645d3857c67e172b96775da98a7c784
MD5 b2cfefca17898c1950a077c76c39b724
BLAKE2b-256 aa6c979c7f81b26160c3f4831b32b55b34f86e6f9eb94f9278e569ebd8471940

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.50.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 68dfc2de168f98ea490b64bd23c4e60ff0ecfa5544b625ff4e54b8adcdedf20d
MD5 9c649352a08fec44a111048c46ec9d08
BLAKE2b-256 5dcbcb50e8fba512b640c03689bcc3d23efa5aabb82680ffda93fdb3b9e6096e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.50.0-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a6a48138c9b25f2f8b8102e3f504d5422a577cd1b5d5d2c208f574527fe6c342
MD5 b0aafd41b45a9fa78ab58a704d0ad8ab
BLAKE2b-256 03e284d0a7cc931ecc55de828556df9811037757a02269208d42e87f5fa155ce

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