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.)

<<<<<<< HEAD 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 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 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.)

Note, if building from source: You must build and install unitaryfund/qrack to build the main branch from source. CI/CD builds wheels that contain pre-compiled Qrack binaries, and that is the form published on PyPi. You must also install OpenCL.

main

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).

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


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.32.17.tar.gz (34.3 kB view details)

Uploaded Source

Built Distributions

pyqrack_cpu-1.32.17-py3-none-win_amd64.whl (689.0 kB view details)

Uploaded Python 3 Windows x86-64

pyqrack_cpu-1.32.17-py3-none-manylinux_2_39_x86_64.whl (2.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.39+ x86-64

pyqrack_cpu-1.32.17-py3-none-manylinux_2_35_x86_64.whl (2.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.35+ x86-64

pyqrack_cpu-1.32.17-py3-none-manylinux_2_31_x86_64.whl (2.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.31+ x86-64

pyqrack_cpu-1.32.17-py3-none-macosx_13_0_x86_64.whl (1.7 MB view details)

Uploaded Python 3 macOS 13.0+ x86-64

pyqrack_cpu-1.32.17-py3-none-macosx_12_0_x86_64.whl (1.6 MB view details)

Uploaded Python 3 macOS 12.0+ x86-64

File details

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

File metadata

  • Download URL: pyqrack_cpu-1.32.17.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyqrack_cpu-1.32.17.tar.gz
Algorithm Hash digest
SHA256 086764c45d5b07fd4046d489e36a3b7777e1bfa0c2b438b9f155e04d7f9049d4
MD5 2fcfc85cec13c1c597995cfba5767489
BLAKE2b-256 f736737d4710917f34b5eebcac2c40b471d6415985c3ca28ae9e0fddc948fe59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f5a19c39f1626e864ee6070c0f46a3640b7ee559b56de823d886cfe1e8301e39
MD5 d72b00659e893daf9c03b422c4054608
BLAKE2b-256 4acc0987883a5280b687e0fde3079e61c6fba1e85c1df276ffcefa1ccb23b010

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 940953c4d3491a14631457bf6cc0bd53e42793b5ec464b2869694837440e5375
MD5 09bec642780901ab46761c4980e051c6
BLAKE2b-256 8e9a7fe7d861a8d7df1e0ae3611da45374c10f1960c2550dd1ea2a0e173335f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 fb5e7ce1c4376d448772ff85185c36b95608b5b0516aad1a9dcae274eee6fed4
MD5 f3dfd0c237afd52e673204bbfaed615f
BLAKE2b-256 841bf205857e9dd221caecbdb0a3a4bd0abe8257f4fcf40f53821fb8c3cb83cb

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.17-py3-none-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 8f9a67ec6ec4d97b6b6e0b5a61a87dff5229c7d93bc53a49c3a429bc6174400e
MD5 d724888b0e68013b0fc69b4b9f20585c
BLAKE2b-256 376c0299199537c41917bfe87d1b7152b477102635fbd423e6ca75a24fd7f776

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f8f0a9c9e9ce9cc23b3d41cc1953cd4980f844462c0b025153520a2822664c8a
MD5 6fe19bd7e98790233d162e405f4c4321
BLAKE2b-256 c7f9f338219174042fdf66caf335dc03e187110a043e2bb3d756de83aa757c92

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-1.32.17-py3-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-1.32.17-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 de0938276247ab2b6fc147e3325162bf30ddb84a296cf15b7bb51981ba86c2dc
MD5 f059627b5ee5f856e2e13fb0e0115295
BLAKE2b-256 25340ca10e76175d6835a2df4837e7b17c58bee0e9a7a0f8ffec9b3606e2fd0f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page