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.

(If you installing from source, it doesn't matter whether you use pyqrack or pyqrack-cpu, because the build version of C++ Qrack you intend to use must already be installed locally.)

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, 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.51.0.tar.gz (47.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.51.0-py3-none-win_amd64.whl (710.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-1.51.0-py3-none-manylinux_2_39_x86_64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.51.0-py3-none-manylinux_2_35_x86_64.whl (2.3 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.51.0-py3-none-macosx_13_0_x86_64.whl (1.8 MB view details)

Uploaded Python 3macOS 13.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.51.0.tar.gz
  • Upload date:
  • Size: 47.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyqrack_cpu-1.51.0.tar.gz
Algorithm Hash digest
SHA256 0443ad4b8443eff490ebacaef4bbf9ba547ac4a7dc058392aa0654887044d711
MD5 79425944f6e49534ac74e9f81d44d59a
BLAKE2b-256 369114e44d74b11ab67c2129debec2fbffdca9ce7e666ed0750b61e4d9200574

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.51.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 710.7 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyqrack_cpu-1.51.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e8e0ce034da1d2901bd25d3640ddd53daad18289e3a7fac68dff249b52781f51
MD5 4ba781c2af237e881f7fb4cc4d696642
BLAKE2b-256 974aaf15f7c08bf8664124786bf4e121ba88c545cca351c925cbe33d4839a9d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.51.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 bed5ba39b23857a9c50016956aa96758bd7af1ca16d5f09b8e22e4e4c7db2119
MD5 506b675167e2482beeb7a9e9db145e16
BLAKE2b-256 ce7c73aadbcd4f39d48c9fff760c75beefd08c11f0cdd497c722c19ba6abf221

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.51.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 68dcc6b8e4d731e6521ca83e735a89897222d5fba81430a4e60aac31da3177c8
MD5 da58ae482e9ae8cdbc1e66faa3cb9907
BLAKE2b-256 82d7ee7e28aa45d5ec7ee39020bd2504884846516726b1e9eca235c5a2397fb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.51.0-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 44a2c4ae9999d4c9f36e0c28d5fc94dd0793e5aa968c2c502897bdfec193b366
MD5 efdbf41fcddc3204a5597b5a901c1b80
BLAKE2b-256 1b36a319e1007c0b306a579a2884eb8791a366953f754de09549a1ea76515043

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