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.80.1.tar.gz (51.7 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.80.1-py3-none-win_amd64.whl (841.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.80.1-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.80.1-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.80.1-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.80.1-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.80.1.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.80.1.tar.gz
  • Upload date:
  • Size: 51.7 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.80.1.tar.gz
Algorithm Hash digest
SHA256 1c457d0871e69c58c01d4d2153b4f5bc342c772c313805ff81317a30e65fa96b
MD5 ee103fef81ed358d81f8eed175f33b7f
BLAKE2b-256 d6a5feac16634fc99869535de98a81c36eb53ea75c52c7f3089440df8005c70b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2046fd1fdaa1b0ee943d93ce2c472486fec45c0ad57ed9ed831c3e060dc70b1d
MD5 b09cee0d5871988d29ab884276c88ef7
BLAKE2b-256 8f2ec9321a8db2aac581e06a1e598e32bcdf6607d52aacbaca4981b11c8ab38f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 19383b37d24a0a1afb74269ecb65cae230321cae1d8596248b1cbd83122d2dfb
MD5 9710107fd56f308963431c2e76fbacc7
BLAKE2b-256 93bd26661fbc85d7a985880cffc10f066539ad31fb46e57d1df5c8188cd09623

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a160b6334953293182afc2e145ac6303689dca469f62789443d15118a449460a
MD5 1eb03f7d6dda0a7f929edd6410145183
BLAKE2b-256 16dfe303a45458784ce1aeb772bc3dfb8f1f5aa4ae62a9c0701052e8b60335ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 3871e6bdc6a73274b1215944be153ce7de048f7729263eb020291ec0991f89fe
MD5 a547c1e1b06b12733b08261f794bf1c0
BLAKE2b-256 02a33d57f4400adecd28668cd627acb5370c27579ae5d37a2ee313e7a6e116d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1cc981d33d3676099487792111dbafa78e61e7c33d89e49ff10b2b92c1dba017
MD5 1a278c064604f7a428daa269fb2bac05
BLAKE2b-256 dea879e2c76dee2d70be616bedbece624bfe4a9e68c6eff85f165e900f90bf28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.80.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8294b35e43ac1e0cd794bf6c4da7fe22320b00cdefc3e609a97271ef3b03c634
MD5 d8c7ff1480fbdc96821fc9626af68a2a
BLAKE2b-256 caa47afa3a66d124eda7a6e03df13ff4aa1074e99a9f5c91422ba7e8cd6d0780

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