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.72.5.tar.gz (49.6 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.72.5-py3-none-win_amd64.whl (707.8 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.72.5-py3-none-manylinux_2_35_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-1.72.5-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.72.5.tar.gz.

File metadata

  • Download URL: pyqrack_cpu-1.72.5.tar.gz
  • Upload date:
  • Size: 49.6 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.72.5.tar.gz
Algorithm Hash digest
SHA256 5fe1763a04bf6be0b9214c901fb83786881d5920d2359bf2e32ff3b6b876c180
MD5 1d27e5580289bee9f70ba8e91e7bdfbf
BLAKE2b-256 001ce107edea8dcff76bb0a4eb0ab61d9bab0bc5319b1c561fe3b05251d0a894

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.72.5-py3-none-win_amd64.whl
  • Upload date:
  • Size: 707.8 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.72.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 cc5d29dd3d483940985cc6856521051bce3eee813881c438dabf4e95e438b3c7
MD5 838fb806a73e583d1098e111943050af
BLAKE2b-256 742fbe6883b951d780586d091e54fca7a6e73588f6679cca26f0295d78f6743d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 69ca0a83a2b288580f426290f05afc2836ebffb4afacf010743eadd1d76f4486
MD5 71674f3089297175c327c079285bb4b3
BLAKE2b-256 60ad34fc02855bbf30b1e43c2d90513f151b66838e19990e2af83ad466d744b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 2adadfba76c1211d8e7a35731c8f1e93ee0f6944200d29f36bdad5ddefa80cdf
MD5 926a183a16b3dd1ac5f2b3eaed47975b
BLAKE2b-256 d68040abe2018dc6ac2b13257bf15cc483fa6ed77ad5a431a3297786e2bda607

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.5-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 1f749c49efa0e97138d215d37ac14303e1eb83c407f9f52f8f5056244f893786
MD5 474c6bd016ec958e88fb5503de8ce7b8
BLAKE2b-256 bdc8fb3d21062bfb58022e8b7308133e6bf65b392fb36666c8c9ff40b1e8ec5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.5-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 22c4dd648ea48c86b88b14db9be01e9e82a18244ddee73d9e359aa1e6d91ce92
MD5 196f009204c9ed8da0fa3fc76eafd908
BLAKE2b-256 19b2bf980ac2e98fb598f5d76bb9e9bf85468ef6a5fa9fdacc75e25746f85c9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.72.5-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e4c2a8c40dc8339e2619553828d1fe8f53245cc4b53032b94ce8473dc4324441
MD5 10190130506c3d759f0b5bbd801ce3a3
BLAKE2b-256 476fa86c168ffeae5bff31a8a3465039d610d0688dea8ab9672e74b42c6a3b5c

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