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.84.3.tar.gz (52.0 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.84.3-py3-none-win_amd64.whl (758.4 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.84.3.tar.gz
  • Upload date:
  • Size: 52.0 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.84.3.tar.gz
Algorithm Hash digest
SHA256 2f25831df9d4eb23fdc75f976a87f779fd4b154f1a76ec341d1ff107d7da3697
MD5 164fbf425ed05555caa5d3cf5a178a04
BLAKE2b-256 93355676559c66738415497d332685d6c8ef35ada35b3a43d530474b80172340

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.84.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 758.4 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.84.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8d63de89336f47b3abdf6f1df2b6eb09583f016e2622a81b23c448ea7d21b615
MD5 3d300c99651a0643756747db3ff915ab
BLAKE2b-256 a7c66771b9740d756627e336014390a328cc1c60ab223f6c2419918af28bdcad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.3-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2e2c2527b8447637e3768e14ce773ded0831e9bfe23349ea8328a0a724d93e39
MD5 6aa17e502c8e7a14692e15308a1496da
BLAKE2b-256 fbfd16040359a1bf77b8b8dc38f11ce8e59441623d547513a0aa28d6457653dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.3-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 859daea2209b0cc9bb72a5d02aee54118b85f74be07dc8872ede3aca17475c87
MD5 f67ddb2996208a2f95c1569a3ed31318
BLAKE2b-256 66871482ec5cb1bb6da208065877aa614acaf9228a481ee7717414491021f85f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.3-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 c3091f8687f8a78150b11a8b9ff7e18118424595797ab1f0eb26d78eab35b44d
MD5 5eef2ae0e18df4886c0d1cd83307c9da
BLAKE2b-256 f58e41f4e7d005a2b3f45102a58530ed53ea40c48df56dd7e22121aafec4cd62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.3-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 5b1739ff2674ea7d30a31e6981c6e55cc5054582f223971debaa26e4e6d9b814
MD5 92da5eaf70ebf6eb2e6571926d9ec36f
BLAKE2b-256 40ad7e8db97eec1f957691dcd6f955c61a695a5f8727aefebab68130f747c870

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.3-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8ead08aa9603d6bef0b99a40daaac808695befe5175d1028f1158d0ff84b1bce
MD5 ef2bd79fba5c12da9b2058f954dc0886
BLAKE2b-256 87d43e8ef91dfee1c91aa86b9c591ee4888525a332c0e9e796ab6455ecf7f6f2

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