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-2.1.2.tar.gz (56.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-2.1.2-py3-none-win_amd64.whl (999.4 kB view details)

Uploaded Python 3Windows x86-64

pyqrack-2.1.2-py3-none-manylinux_2_39_x86_64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack-2.1.2-py3-none-manylinux_2_35_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack-2.1.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack-2.1.2-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack-2.1.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-2.1.2.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack-2.1.2.tar.gz
Algorithm Hash digest
SHA256 7356007c3ff7ef94d92e74b6b54d59bcfa7825296ab21de183faf345474d6f0f
MD5 4192400f14a8d8fe352d8d67da9481bd
BLAKE2b-256 08ee705c6fb50e8aba6753daf39ce5836f1d4a88f23d467705f1d51b175ebafa

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack-2.1.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 999.4 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyqrack-2.1.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8f37a50c163603bd0df3df6a04aaa26f46412991a7162e349d81752baec0e2a6
MD5 c827b7eefc8e699853101ad12bad279e
BLAKE2b-256 380714c89cc30633ea0bf67dd88897cae553d053d4d1ef557a98d0ea78fcecfe

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.1.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 5258abd86dd256a4241c0a0c2b8b6acc910b2d3f2d76d8a6aae086b65b0c5581
MD5 268a938f0a14ae190710fc8dde59333c
BLAKE2b-256 63f6306f975146572aa15100754ccd58c32f07d820661550904048f777ea6bab

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.1.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 cbf1e5405d2916abce72595240ef47f5b5fcb4f3bad1c1ceec30a9e201b3637c
MD5 be3628188d62f1f9bae8748b7156b5ef
BLAKE2b-256 d173734d5a56466ffe610dcaf17204e0db4517bd1e39bc44e5af09923d7db891

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack-2.1.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 491fe467e69820f229cad06ac48493dd45eab4cbff329d28c03ded08e408f5dd
MD5 7c52947ec663aec94504ab3188284b90
BLAKE2b-256 2d8ca9c65ce57c85ddedf9862c9b654dbb68e321c2aae05a9b037dd96a86ed4d

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack-2.1.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 57582b30bbdba1e812a85b7cf298dc24ce693d26fb5cb2b327add3672cecdb3c
MD5 fab4b26e80b4192cab98c21bc4793e08
BLAKE2b-256 593b9f5010eee218fb0e859b2378e0aa413dfc6e862b3d31f199b712448c6a30

See more details on using hashes here.

File details

Details for the file pyqrack-2.1.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack-2.1.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a05fd83496dad32ae91b7d8efff86544569ee40cd1af5199f8916d4f693ae2a4
MD5 e236852c3bc9077a1b92bad37b7f3083
BLAKE2b-256 a3bde6f5196daac0123b31c87dc206e3e559f2082756de1a9e7863e3f64300dd

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