Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11/OpenCL Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

Note: You must also install OpenCL to use this version of Qrack. (There are also CPU-only and CUDA version.)

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

If you use an integrated graphics accelerator, like the Intel HD, setting environment variable PYQRACK_HOST_POINTER_DEFAULT_ON=1 (or to any "truthy" value) will automatically set the default of isHostPointer option of QrackSimulator to True, to engage "zero-copy" mode by default.

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_complex128-1.88.0.tar.gz (56.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_complex128-1.88.0-py3-none-win_amd64.whl (988.1 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.88.0-py3-none-manylinux_2_39_x86_64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.88.0-py3-none-manylinux_2_35_x86_64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_complex128-1.88.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_complex128-1.88.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.88.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_complex128-1.88.0.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.88.0.tar.gz
  • Upload date:
  • Size: 56.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack_complex128-1.88.0.tar.gz
Algorithm Hash digest
SHA256 7e55b10bf3cc000c3af9562743e5768ef04bae466f8cd61b6c14b0d30f50f1bf
MD5 1789e6a337ce1b2b26b43305ed6db034
BLAKE2b-256 be953349b4b20d97cacde39e629bf13ce7e9ed67fda26befedb155664642b66d

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 616306e14e96984996370b0b5a785e7d9f82fb7908e7e063ce96f3a6188c5095
MD5 7bedc8222ddf51a76b1defef1f3ce929
BLAKE2b-256 2f38e7ff6b4b02a916b20b59d04a1b85ad71dfc1d07f77eac1834fd652c5b916

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ed84d311fd2f5169a4a351e69fc357decbd9094fe856bfde293e7057152c293d
MD5 c33af2021a529571ee734b2c8e11f8ad
BLAKE2b-256 8de047df4ceee07f4837a494706557ab3125ef214a0bd591a946d4c3d7c9d72c

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 68de93eddf758da97ef7d7844990413c56caf0116a67d340084ad39d2248bc2b
MD5 9a6e0c9d7d6f138678680d07534fd0dd
BLAKE2b-256 3d9e17387bb07ff79af96a409a9cd4e61f679557da990b8909e3e02f9809f88a

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 b5c4efe0afa3718d31979b1168bd1fd5d50f5b04bbf9f479a47b7e20ab4c2d4a
MD5 b83df97dbd6c4211a1401ec173506e2e
BLAKE2b-256 d60c4bf82bf75dd06335def5d2a7a7de1161645f0be11dc2e8e225214b63eb8b

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d1527a32bdec9f349df8f5c696baf0c3a24244c450c1d1bea95ad6eb5fb2e101
MD5 7ce32c0422be9de5842697028df933b3
BLAKE2b-256 6c2a7bf093b45a63d871a117a6e24ebbf1a334a9bdd5a65abb49191c52f35951

See more details on using hashes here.

File details

Details for the file pyqrack_complex128-1.88.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 041d281b759738602a346da51a43fb0b96029961e6f582996b15aee8f2eb03f8
MD5 22308a713dc4bdd450454f52c8ab32e5
BLAKE2b-256 2e122ca763eb41c03a1900447767a4645b74bd45559e3b81055e0ab29c7c6b22

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