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_complex128-2.5.0.tar.gz (60.4 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.5.0-py3-none-win_amd64.whl (816.6 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-2.5.0-py3-none-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-2.5.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.5.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.5.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-2.5.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_complex128-2.5.0.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0.tar.gz
Algorithm Hash digest
SHA256 681305771a0c002c2acbd647abb1512516eb769b83345b10ed42adf7b15c9ab6
MD5 b7af8a460b16e76dcc02bba0d5bbd2b3
BLAKE2b-256 6fc3a33e20cfa2df702631df66ee54a52c9903427dc04f16114b5390bd0eeb1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1805c8e8cacb29915d5f1d898a408c74e1fe87de12592fcde05ab72f5b0d06f9
MD5 577877094725c722b1ff3a562dc7edf3
BLAKE2b-256 2386ae9f90ac6adc30cc70b98c482181761b61ec58f17b03bc164974cfdd4718

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d430424aaf425fefafc7475e95bd60df94a515e6b195ea418b99fef58f643273
MD5 405ffca9c5b6cef4d67e5a28b25d20d9
BLAKE2b-256 d26b13a54512f76597049df2dfe7bb36676b8dce15da9132af98efa5c975d71d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 29c14e45962a0bef46fd82c58c93a4bacf1a7726348b85c5048ff95ac9e18cb0
MD5 408e15c74b478b199f5b072920cdc283
BLAKE2b-256 e497741f3d2578a1dba42ff545d4327e74818a3a08d195256bacb508c0ac3e51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 6105264f6a3b81362dd2e4119d2ce4c25cb41d64bc1c1a1af77d87ac31375f6e
MD5 0c10c16fd662048e1b7682a7d8d6da5e
BLAKE2b-256 8e667d7a382998b7175a4c448bb9b98c4a959846a6a686a247217657d6d1b73f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e931e5e642df55ce401040470f5b88c9445b5e4d55258ec59894b51f5ab51748
MD5 f0f03b038ad0b88804458f16226e2287
BLAKE2b-256 49e5508ddae57a66d753e702d37bcd21e4e033eb1b5c31a5504d08777a945292

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-2.5.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 68c140b2f37e838c9ec15440db9479206d77e7c42048b31da6d2122f0b468b86
MD5 eaf469cb90e48038b151c264d6524d98
BLAKE2b-256 4a8de1d3138fcc18095a7235d3211df6bece3faf0badfcf31131eee4c2cc9477

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