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

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.84.10-py3-none-manylinux_2_39_x86_64.whl (3.5 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_complex128-1.84.10.tar.gz
  • Upload date:
  • Size: 51.9 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.84.10.tar.gz
Algorithm Hash digest
SHA256 23a7c2f48f60c83a264470ea5354aa4ec50c72c5ce938a16af5f9df839574f01
MD5 66f73b7b8340a1d73ca278160799520e
BLAKE2b-256 d9386c38a17f336775673855a47547c5d6d55a694ee30ce897047a4d1278f760

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dfde04f654b7033d67cf36c5b09e37da8d3329b9a4e1b04cad2a60a7914acbe4
MD5 6f06ec49b869d309b0bb39787abccd75
BLAKE2b-256 779ec18cf09873807a56ea514657b43fa682cd7b8cde55acaac465d9dd851283

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 5048b05085677465072504327063dcf8aadec914cfd519321b5fe9b5f880af89
MD5 a5a7eb3a9c516afce144518b9bf1711c
BLAKE2b-256 ef84d4a0eb6cd451f9a483dfd0c86bf012fee010e80c9213b86374c6b29f7be4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 95c59dc866be1c99afa12442b5436af69d79eeca29ee5a064f4083d3dbec551f
MD5 9522a2b554487b748e5bb4ec1127e476
BLAKE2b-256 04629cf190fdfeb72874afe0c4f360793d0648019d94f9b0c96c9b554f1a5a1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 bf135886700d5ce8d1791290701c792ac4a93696b39f5820b4963988717112c1
MD5 c7189556a5985b40b6f59be1ffc2581d
BLAKE2b-256 517e34b65a045df5ceb29f2841cf122b4ea6cadcc167edf51b2ba2b9148e31f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7334f94007572930c0266ac9b496603e4ab402b48dab279a90f9575152763c96
MD5 43fe8be353c3854c6e7d55ad8e5f7ffc
BLAKE2b-256 320a031ac7b600ed9375a62670f2edf5ce61d9f1dc83e93a142e039d0e25427a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.10-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4995f4644fdf0e83fbcb74d2060e767995a7221e0a3cb62cc3e29341032c11c5
MD5 d670ddeaf97a8318f7f670e4facda9b9
BLAKE2b-256 73bfbe2a180939d6766972e9fec1dabc3b8a010823724d0609869b09f4714ba2

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