Skip to main content

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!

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-2.13.1.tar.gz (67.3 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-2.13.1-py3-none-win_amd64.whl (832.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-2.13.1-py3-none-manylinux_2_39_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-2.13.1-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-2.13.1-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file pyqrack_cpu_complex128-2.13.1.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1.tar.gz
Algorithm Hash digest
SHA256 56726f304ea129bcb46def7d96f76957a22fd3d7385dda4399b704b1e9b06335
MD5 a335e7f24c43fc4965fa3d258e7dec88
BLAKE2b-256 3c42c095dfbed11206ea802f0b06f4bcb40356911a3890b6c5068eddd6e59619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 4421c0ebff3b512b786e0af3313d8dab7c6e14019e2c9e40a61d30e44033af3b
MD5 e8423cde1746f2385784240663ff9d99
BLAKE2b-256 dd957f8a9d44d6767974a5bf3e8e58a108308f73eacc15cf960dd4d024a0780f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 35da4afd56df8adfa20e1d307e89643d4184c0797ae58f9957cf8bf03d008946
MD5 8b41e3ebac148eaf3f1e9b43deef8eb8
BLAKE2b-256 b87e5c8bc8878e973654675db741ec9119801d83b294b0601637b378e034c6c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 0710d5dd4623a2137371c47b9cc5294339b44b04df6418fc88a72cd55cddc17f
MD5 c92fb81ab07fe7da5a5fac5cd104b17a
BLAKE2b-256 a3131906762e2b3d41489768a8fb6f0eee38d4fbcb0e6e1bc0d2421e3d248f55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 8c2c8f4b4062c72984823595d3c6d23db008c8a16ed3cd9e2cfa25933c529244
MD5 f6c981858557d11ae0f6f6f95ef9472f
BLAKE2b-256 46db8095ce262f2b54fda929967c4993cb85d579a7054fed3edb5c9d6a3bcd3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1f649d12711faf5db962da229ecabd4d6800bf979fa6cf4802cf544dc423127d
MD5 08a64e84f2508ddf947d4bd426566b6e
BLAKE2b-256 40fce8564ab7ab7578edd21462bc6035c9566965f53b452153d552bf84e4a501

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.13.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d0917a22259b5e6beacacac84135b249f8d89550e2322f6acf79fdd8bd5c1fe2
MD5 e239482679517a1be46b81d2f79ebc22
BLAKE2b-256 7ea2031fcb56edae98f5415ff9001b1d3a2949bf8faeaa87402dbd0f05cd9085

See more details on using hashes here.

Release history Release notifications | RSS feed

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