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.1.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.1-py3-none-win_amd64.whl (992.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_complex128-1.88.1-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.1-py3-none-manylinux_2_35_x86_64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

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

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_complex128-1.88.1.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.1.tar.gz
Algorithm Hash digest
SHA256 7169fc4a706d408747a52ec4164d19c05f9c17395807c1607439c9da7d670639
MD5 fe3e03967e6a66714e1cac8775a2532e
BLAKE2b-256 1b36472e8684a3e442c83aa5fb42d863bd20a9ec3470e1c9f51b97b94a5a3207

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ea3d6d5f35eae0ab1722511e444179b9068bce2627ebd6f062aa687603959194
MD5 a56d75715a4144097f3d7e9f556d95d7
BLAKE2b-256 024f2593ae1c82ff36bdb7c8d87adb23ea18cb874040a327351b81862e756474

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 949101ca164e12ee1563d7c7c6ff101e56cd36e32ef1ac7b0a3666d6a1f8b58f
MD5 e9aeaa26623f00a461a30a02b4a225bf
BLAKE2b-256 a64b36b06a8d964e17434b53ccc398a039cb1ec2df76edb8872c1ddb704276e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 e2ab0a60964b06b5107a122b5dbd30374309a36de4ad156f4824dbddace75f9e
MD5 6a18330840c2d26d4c105bb207719518
BLAKE2b-256 4f064a983fec5b6bdad7d2901f0978545843e494c6a3b23ebe5861b5e68a805f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f895f44ded2fbfd7bc844b0ff1841756a86ae5f9bab209332c679a08b3d0e130
MD5 ca236da0de8fba3502fa8757922fd04a
BLAKE2b-256 c2e6e66914bda78274050d05c0362a4375ef6482b2288c01377bdeb80d4c8354

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cb7d9a5694fc24beed4701750bf64fc2233f56b51595a3c51dd668daf1dd207d
MD5 2f4690d0e4a21581894d44f9ef9ba429
BLAKE2b-256 e48a408342b24c6fc36068f7c912411ef96b4d137d9fd7e76bb2bf3f1663e22b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_complex128-1.88.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3f17ba7f3ed5bfc7f066c7a1f2446abbfb020753397f181c9215a765f51cd69f
MD5 3d93ebe07d4f05ba8dca0fa2f9e3d5d6
BLAKE2b-256 3a3e628512b34dabbdf3930ebd50254886c6523f3d20f96f53c4f5ab85c0296d

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