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_complex128-1.76.0.tar.gz (50.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_complex128-1.76.0-py3-none-win_amd64.whl (839.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.76.0-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_complex128-1.76.0.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0.tar.gz
Algorithm Hash digest
SHA256 78b03677e9266c81bdac41c449bba0696e30128a8147c00b17972487025d42a4
MD5 798974c73365300254dc5de84cfc6982
BLAKE2b-256 e13d7bfa7a5b5c207d779094e4eb1be546d739e42ad4483e506d9a45578ed478

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 03a7fb6b106cf21dab8c70270d5c50d5714d47b74521e5bae65ed6a24e29556f
MD5 a3fe5760f47789e32d9e47e2920907a6
BLAKE2b-256 f39b47a8228be76f819a77b92724a42f9a38138aea518f4a5db4588e5590df35

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f1d5626d44d3584f127923e1cc44692104f13b8df18bcb4bd1252c81fdbf1474
MD5 93b15e16474f809cdc54549739632577
BLAKE2b-256 a14e638612800d4e4414e94a88bed1ef94a48d6df30d4880fa0f4b4f4dc11ac9

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 8a06cd4a79bd3b93933e3754ebeda543f99e02c3d8b0c5e2946315836b31fd62
MD5 7ac667a0ff7f048b5ddadbadf98a21fb
BLAKE2b-256 d35e1fd9bd9446ac02b01c603bcbac116f38135b2753adfc08a92c305a5b5416

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fd0585b7e9dc7943fe4b1770784b60afd484432966bc7460fb150bd32605c214
MD5 cba575c2403fc3fd6ed34a486e8749e3
BLAKE2b-256 b80eb66043c7846d8bc5c1d02c173be09c09f80ccd004c7d8d52ae5904dbe84c

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d8a71753c6678222709f44b1caf106221b132a2a97b6bff321483d32c64462f1
MD5 5e0b0b144b05cf7f4a3d64fa25a51286
BLAKE2b-256 773d99d293540b049092ff0a63d5fac53622c6204566d3d5cc47b9891224b593

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.76.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.76.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3f4d375a6dc4ccf994028b6576bf47da5163f8f3f4d327a799286307b8e33173
MD5 addbbf1d22f073e24ca0af857f50cb30
BLAKE2b-256 c9142e98d77214bcb8686d2cb26e5dbf44b1accdd273a20fba315a29302b4c35

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