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.78.2.tar.gz (52.1 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.78.2-py3-none-win_amd64.whl (1.0 MB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.78.2-py3-none-manylinux_2_39_x86_64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_complex128-1.78.2-py3-none-manylinux_2_35_x86_64.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_complex128-1.78.2-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.78.2.tar.gz.

File metadata

  • Download URL: pyqrack_complex128-1.78.2.tar.gz
  • Upload date:
  • Size: 52.1 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.78.2.tar.gz
Algorithm Hash digest
SHA256 c3774a4fbcb0a15fd7a8a783a05ffd860bad78a657e9854a2ba5483a2ffc53b1
MD5 ac43c61b13e17f0e70a6f095d5684de3
BLAKE2b-256 c043483dc365a48eb8dcfafa7bbcda8009998a9042a332caa71c6615d3e900ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6bb66a45a5a8edf33cd9d2176c15277e95583b3c0e5d546d34a7355f6b461cb6
MD5 1334c7135f90d9ea817d5a0b3b5b437c
BLAKE2b-256 142dfe5bddd2669e0d8abb23ba4b30d5e7d593c1ce0d4dad89caf1783efbd08d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 85f4bbf99819e52532f3cb2974746dfd5bfa016e17655b7b75e2113610374bfa
MD5 b41254e71df19046348f7e3e0562191c
BLAKE2b-256 b6921248e1a6080c507cd79e552d61bb180609793e43b484b3a89d6fd6638f3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a1de62f66105fc069bd9388e9de502c623939240ca1d67c2c28ea4a8e9052129
MD5 e88b7c0229f07c7b0702d4719711d2d1
BLAKE2b-256 2fc4496e191c572860ae5777d610a6f6623fceff58f3f6494ddc4727e7316e1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 3ddef6c7d5721d23f452e5a656a9f3b30475db007a8545824fd938211376c5fd
MD5 9d28f6818e3047812fbac0b8c9c85354
BLAKE2b-256 224a29f38aea18a61b7243f9532bf0bdcd2ef5c8753a67f85c83c961fc7f1e0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 98030eb42cb084fcd1e2b235ce1642be7d5f7342c5a551a9e7be7c35a1286f77
MD5 6571988949b95418a2bae5409675c99d
BLAKE2b-256 5ca485baafcf88157891a94120cccb6d67004b45e44bf5cc1b7418a9c0d67146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.78.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 038a720d33adb7ea1ab8a1b233062ffa71e331f58f8f1f8b9a0e6de8b8d52a5f
MD5 03e8f9ee650fb904f0723cb36b73c7a1
BLAKE2b-256 a6ae2885679b3d1ab53a9237b27de0462e09909682c094d2d8b675310e3167ac

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