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.0.tar.gz (51.9 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.0-py3-none-win_amd64.whl (757.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.84.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.84.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.84.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.84.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-1.84.0.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.84.0.tar.gz
  • Upload date:
  • Size: 51.9 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.0.tar.gz
Algorithm Hash digest
SHA256 1f88fe680b2f32753e80979724b7cfa6e4ac18e193481ad8860944d6b7a0915f
MD5 819bd3e29aff1259b91b4a02295984fc
BLAKE2b-256 9f96344693492e2a17d19793981faf3a5191d83b2b81d526578e4dc3a7cf1170

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.84.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 757.7 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.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ab3959300039254ea53703345cff33e2e265f052cea205434606d498549741ad
MD5 2f81f182696d4a42abcc78e06835adcc
BLAKE2b-256 b98b4a8a8e5ac1354e98d415db426c55c11c580ef4e91c2745c3dee31ece0ae8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b27498e55af0f97fb7ba637a11231b4767ce5c61d88d1c87832a1c7068612230
MD5 b8ea133052528d5c916b840c42da04dd
BLAKE2b-256 81c0b911f01742cd9d47d182a9c6a22c66afc59095f1a5412f60446bb7f585ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 0fc8d29522180b68079072be4cafd8dab9317c1c27b8039ec2b86851752cbf01
MD5 36137d3a44345759fe156fb4a09830e8
BLAKE2b-256 3b4170538e7af28e7d83dcd875de6fe6bf279e21c046b9cdd381926e433c2ee4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 519872de9e0174f2fc8bfd8fae5a37601b396ae02f47d0285d4cefa7af900a3a
MD5 6417347b95ab6a48adbe56379e8b1ac5
BLAKE2b-256 4ccd455d40f762002ec6eb9474234ff608ec948c1570106137b2191ff9500090

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a3bb6b0d39398d631a7db483e35b9805550b140226cfc6962455950fedec7e66
MD5 7b7b859896c9553006840d5c2e299288
BLAKE2b-256 dc01cf02441a3a3198e08a18ca9fb1d1b07314ac7c6e1f7dd9ce0eb8088edc03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.84.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f0ba3bdd5a33c7de8731b7b8fe73c0470817b6564590da139a61541ae02ec5ea
MD5 3ffcabfd94fc8734b14ca553443895c8
BLAKE2b-256 dca20fff1378ed9b7c0f93ea7fb7184909d5ba246ae9015325a8614d96edfd10

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