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, 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_cpu-1.86.0.tar.gz (56.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_cpu-1.86.0-py3-none-win_amd64.whl (765.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.86.0-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.86.0-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.86.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu-1.86.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.86.0-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.86.0.tar.gz
Algorithm Hash digest
SHA256 fcb687a0f3add1ecfa4c5ae66939442ab566d0ee202f5a843e18f7d220c2ff11
MD5 1c07dc0dc68e852e3a47fb5f782ee6fd
BLAKE2b-256 3cfdbd50cd8367fc0786307a60903b3bd52fdf1b3809cc8355e5657e65ff1c82

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 eb47ebba977efee34f19d498d2c038af576b8448fbda409666d037390af8fac4
MD5 3625e709bfbf8ed6672656668ba6f8de
BLAKE2b-256 1d947c06049d325b0dc1cd29e1d69da0cbec6c865a638eb5b42ce67f8a39e700

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 578a33ac8d72315200df70e047f2dc832a5bc2d32b883bc1b1aa57741f5f7ac5
MD5 17b5f287e33219565eae53d6403cc8cb
BLAKE2b-256 441cba179f574f67d7a2a418085ac795371b2b5121583c9a60f72ce8b06d9a98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c0bc90279a4590fe454824943797555fe516ea450ac5710c9eefd4438f8f14a1
MD5 e42755bb42d4f178b1a3d38110d8811b
BLAKE2b-256 daca151a564925c86f92a450db3305427ecfd85c85f82dcf8fa685d170327269

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.86.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 56eb20957343db1d47c4afebd59ded98e91f3bf961c8d1f134aa1345577ce666
MD5 610b682d560b2023b5f07395fc4e5bfe
BLAKE2b-256 b62ff968b100bca001686dbfb682588fade3d503534171f2a22208da07d122f0

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.86.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 15f876a48caf302854a7e00ea881772de1fbc51055c83d83e99d526f148d06c2
MD5 f1ee07e31ddcffde9ede3de490555161
BLAKE2b-256 62e2a21e88c819889a5a70588eb90673d497b97cc3220c5ea8cb9ff40e391dc4

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.86.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.86.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 16f7c7348082c308b4876fa683207a2b0e8b22c9b000f12d07d3759a76c3ab32
MD5 dbefb819e02eb2716aea6e56923c6de3
BLAKE2b-256 f532509bb8c81994dc8ead4b37de5f0d98d99b7ef93176aeaeae8bf0e304f79e

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