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.72.1.tar.gz (49.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.72.1-py3-none-win_amd64.whl (842.8 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.72.1-py3-none-manylinux_2_35_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.72.1-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

pyqrack_cpu-1.72.1-py3-none-macosx_13_0_x86_64.whl (2.2 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.72.1.tar.gz
  • Upload date:
  • Size: 49.6 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.72.1.tar.gz
Algorithm Hash digest
SHA256 ec18a84d1f4703859990391f74a9abbed061356ddca27989d7db1f7b32f16ecd
MD5 45958a491de0b722ef3e2da89590156b
BLAKE2b-256 c8a5ddaa647d10d542b4585f6e1892e826153c5d305ece840b8244b7e4a4c0f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.72.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 842.8 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.72.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f82c0d2b29c35b5805946e0ceda96868e3e71bb7e8ff3d543d82bce9159e432c
MD5 487498e43b462dca9147cce3caa663d3
BLAKE2b-256 3e89d24210944899a5103a76e04d5572edaa3cab656b90b56a0f4009dc5653fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 928af01af59f369d45ad264d7afa8e1dc1dcc98f89e4bf52a71f39b20b304390
MD5 37f88bbfe64ac99f8c1ec3e6e068dcdb
BLAKE2b-256 d24fc10355159fb87ddbc3e7c22cd145d9d98a7ca2fedb1111dbd033e5a4350f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 af4ced400f90a337c3229c11ccd47e9256553262a091e80af9b43ba6beb3fdd6
MD5 b912c68298231d06eac60db7bbf97866
BLAKE2b-256 2dce829f111ac7cbd6a0a6921727ed00fa0352c5bfc1c4cf6f469c08a41a36be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4066a9280ba37578b62d2dbf358d699d37c82377123905d57ab363eabb95d675
MD5 5b8069f661ba6402d726d2183c66dba9
BLAKE2b-256 25bef03e25c8f0bb0ef56ced0850d2e267272f4b824444aa36f49df12ac46ea3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2a1f7e42d6410ca3ede382bd19fd87bd2b3224824e80109f741ea6acd7b841bb
MD5 ffc8c700b2d322fbc6904b1b424dead1
BLAKE2b-256 3a292905fbbd3acd621153fdd4cd8f7e7a75e62bec955e2cee3e318ca75a14c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.1-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 b9ea6ef223540a1a1284655c5a77cc6355415180d94d74131375a49c7923c86a
MD5 c265bbab6d312e80b70c7cca1c621685
BLAKE2b-256 df8eee13db1d801adebf258fe5c991251b67f5338d94250bc9c92bbc0edba8d5

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