Skip to main content

pyqrack - Pure Python vm6502q/qrack Wrapper

Project description

pyqrack

Downloads Downloads Downloads

Pure Python bindings for the pure C++11 Qrack quantum computer simulator library

(PyQrack is just pure Qrack.)

This is the purely CPU-based variant of PyQrack (with module name pyqrack-cpu). This alternate build of PyQrack is provided so that systems that won't use OpenCL or CUDA anyway (such as because they lack any GPUs or other accelerators like the Intel HD) do not need to install the OpenCL library in order to use PyQrack. In this form, both the PyQrack module and the underlying C++ Qrack library are entirely external dependency-free.

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."

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_cpu_complex128-1.73.0.tar.gz (50.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyqrack_cpu_complex128-1.73.0-py3-none-win_amd64.whl (715.0 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_39_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu_complex128-1.73.0-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_cpu_complex128-1.73.0.tar.gz.

File metadata

  • Download URL: pyqrack_cpu_complex128-1.73.0.tar.gz
  • Upload date:
  • Size: 50.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0.tar.gz
Algorithm Hash digest
SHA256 494b036f0bc1c6c6addea857067895fa7fef103ea4f17318807dfef8a267a206
MD5 604ffc73c277e33b950b991bb261c3ab
BLAKE2b-256 c95b7a49f2edf9bd95834fc2df8d613ce9142f9b3b7c410f549dc961794cca55

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8ad07b60ee240ccd8a38460fc483d845eac39218e67c1e1552b54a7f22e6942f
MD5 6de38800995de74336a75db3f5ab296f
BLAKE2b-256 04092a1d3e6ac07106d2ff45903644249b39ff6453aa0623bd08cb4d552dc11c

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ac1a90acb8dec52ebe9c192249ac9c005234a5b517f878c85167acc5bab43a26
MD5 6ab31ba205e9f7a1eb3eeefa6d62bc24
BLAKE2b-256 0672acfe4d25542b09be769acaf8d335ea234ab3bf291e2fc2941dd5a10f702d

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 fc98c056d2ce19f20144a7ef9fb3b9a17668deaa5ef7400a01d714c086b1c459
MD5 2ab7a6f4c4e31e5f4eedd2f5e7ec5c9f
BLAKE2b-256 a7a6b79a0e1110cd87943ad185a6706716a800fa0912a1dbb7e277ccb6f2e2f2

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e037fcf3d2ff69a3094d2f66f4fe4cf363e9e9c039de3fcbf5c177800709316a
MD5 638d786ef3d5e917fbc5ebd4ec8433a3
BLAKE2b-256 4ef5916b7397ff8d0d5918f3f0d9ad3f21336260219c53be328ff684e6ce0fa8

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 97340c2cd00a7abc96e7baf528fe38e618bb47f6d2a788be78c1a91cc7a8a21b
MD5 1948b6981c280c84366b5bffbbf7acd1
BLAKE2b-256 cfdfe20e8bf9080a75c50fe3cc4ebfef1b2c2711bc1e931311733bc2976324e1

See more details on using hashes here.

File details

Details for the file pyqrack_cpu_complex128-1.73.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.73.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c87c321e9efb40513027e558afde84765dd5cb38482256a28912f4fbaad42426
MD5 ed9c539780adf4363a42fb27ed506206
BLAKE2b-256 2aa5878475195a101d09c23be47909409740f9752c09e7272d9ec8fc0e9aefb3

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