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.14.0.tar.gz (67.8 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.14.0-py3-none-win_amd64.whl (832.9 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-2.14.0-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.14.0.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-2.14.0.tar.gz
  • Upload date:
  • Size: 67.8 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.14.0.tar.gz
Algorithm Hash digest
SHA256 50965d7462656eb083ffc3364b992adbf45676810d4bf41cc957a78db370f933
MD5 33b6087a65d8d0991c138c0f320618fe
BLAKE2b-256 cf40547c8952c712e0c0bfb0a82e268ae0e24b23dd80aab8b8284a65bec97eee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 47ac626c03aff65eade55dacfbd6a18c66ee95db766bdeaa364ba5c0e746951e
MD5 5d621ac56abca3d3edfc36fce2c31c41
BLAKE2b-256 0a601709c41d1fe9b02d985a3d267a452620d4a32d203a38ac4da3029979e7ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2f389537460a5aef34a4daa0cab9a9a3795ae5e6fc62e32368677df9edf0a94c
MD5 f79209a46d6496be4801a064364a7e9a
BLAKE2b-256 c2ae0f6c8e9717ab74de90f7c76c9910a79ca43d51ccc13627c7dac38d1a7bed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 85df76c676d5218dba899dc09999a1281a078163a01ab28b41b2428a61710d71
MD5 4f73dfa78fade88e92e6f17fd63f8623
BLAKE2b-256 d919cbf3bc19a2a07a3ab723245655bad44be0351d73bb3273d4dc85e27faf55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ec439a3ba81540726fd7e88e0da9c152e990338eb8605fe3baa668451ed0fff3
MD5 f3ed8fde8c1833ab99cbc15d374ca045
BLAKE2b-256 582b793b609b33ebddf439fcba02442fcb7df3bcfb8eda8d62b753add27f129b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 14a6eeb9ed4399a211e54de3554a96a1a4ed468374b0d9a68c793a45dca379ba
MD5 acc75a7aa6bd63fe1f25198b61de3e6c
BLAKE2b-256 5950fa9bbec79ed37663bf309557312c6b00ca4aa86a7615a0dc8af91a7eb043

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.14.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bd39a81ab3cb0496d56ed5640b40c6fd5fdf676546d15aa34c79e0076fa2e4df
MD5 77093a204cc727f5f744f16890b38f6d
BLAKE2b-256 c4cc38ff8c162b2b7dca0a2b415c8ccbef2daa8893e3aeb64b07c82f0be9347a

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