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

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.84.7-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.7-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.7-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_complex128-1.84.7.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.7.tar.gz
Algorithm Hash digest
SHA256 fb159fee226f970745d9bed616bc64941d325079391fc2ddc5f2d29b331cbdb8
MD5 5fec366a24acb044325530820452b5f2
BLAKE2b-256 91ba0a2033bf35d07c0d52eaeebbd64f32a285829e1ac4a32d6c8fcb1febbe91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 954e60e37eb965c0c3be6acbf9a5ed29d9ecacf8b92c8a75ef9d05410712bd92
MD5 381cc61a01a2c096c2004b2be39dcb37
BLAKE2b-256 d71f343e57d1a28601d8f347580003ae2bdfec3a231cc8d34583c462ffbead50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d0c52ed8c48af6bbb60b69c3309f6f586f39c2101c2ee6b42a13ac89b1523ac7
MD5 ebe4e56b4b78965a6f11fc27f305c98b
BLAKE2b-256 71f50f0b576386d16b46ee4cdc3b704106353cbe5466dd139803abd48ef917de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 e3e399d1904564634de6bf4a4b462394d60db12d98f750f6d3842ab4964292e7
MD5 ff58387f6f31e11c661235e81f21c8be
BLAKE2b-256 01d6765fbcbd9334b79a9de0b3975da43764560b80aba21ac07469ac8319fbf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 79cab0e3cd6a79de9d0c07e6785bdb331a6b31ee39a98b84c07f60dd67a0ae4c
MD5 aaa7cf890f3d32face8918b91bf034e0
BLAKE2b-256 76d1df8c1a0f2e66a6c499cda6b0a8d1bfce42860c034ea70838ad788f3261de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3bcf77123938b952a326c79ee3a5006c4dd68ff1453d843da7069724ee45c614
MD5 2341b0eb3da26c79277c0aff6c829a01
BLAKE2b-256 763bc01f58de3f7ced8538fcff6ff39a42ac4a003f43a5d97d92917adac88ed6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.84.7-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 29ee06f33e9c6078309d93dbb43c7f681073d927e9fb32d0fbc85b7099b8cb91
MD5 ec7e63d87cd850782b3dc4b43997e924
BLAKE2b-256 2ba4db764e25f56eacd2cf43fb023ec1278c7d379106987934e16bc3283922d3

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