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.72.5.tar.gz (49.7 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.72.5-py3-none-win_amd64.whl (711.7 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu_complex128-1.72.5-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.72.5-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.72.5-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: pyqrack_cpu_complex128-1.72.5.tar.gz
  • Upload date:
  • Size: 49.7 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.72.5.tar.gz
Algorithm Hash digest
SHA256 2e6321a6084f1c69e98d276171d4ca837e42ad232e6477a74d4f929b0175d746
MD5 09265c5b375d8242508ae6f131898aa9
BLAKE2b-256 bb93e089daf09cfd4ccd6754c30c3f772498d3e37bf165698e362a93af2f9433

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0448db7a82c84dc82a7ade8075a512184290696793365bb50780ee22f894d3cc
MD5 144797e6a8c1c97edb3627990d0d1c08
BLAKE2b-256 33fb8451c8656addd047e85a3032a4772decc4209385eab69342beea2f2d0c87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 378a77f07570c2e81214fe95a12a5412af1ebe94c40ed152483c26f025bcd473
MD5 b0f278d5147993cc20b420cd960bb595
BLAKE2b-256 7e2a9d9e1b4b8ca666122d7d6154a17f579053182fffe3ed3c38b3d2ae7108ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 58d27574217c68cd1a29fe9ca222e860156d5ba6c2b885c066d8963fd8de15a5
MD5 3b6d888d96830017e8fc1d238c87a750
BLAKE2b-256 3cbcec3fd1a743c2a738ce0fe9a9f01b63008687f4748d65a47c4f269abe0ac5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fb3c421c7d9aa2d331703d7cf5d7b8877c37c3b00aeacba41521386ca8e13a99
MD5 64aa3db894b7e514c363accb087e9198
BLAKE2b-256 db75c0647be4f77db3a94a5ad898cb7fe193e4cf52d3d57addf1e8f1e0e08c3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4f31c4206fde527ec2cb9b46ffcaf5cf78264fdab84747a72b9f03235150d66b
MD5 da6f34c7699aa885403057b8478fe598
BLAKE2b-256 b9736dbbbf965e2e6ad2b143df840b9291bc51d60abee11ca5d0327da58af1e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyqrack_cpu_complex128-1.72.5-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 140002f54bc62cfc97681e5b195445ed8aa2b1eede5c60cbfbe5f6414098896f
MD5 cb5df24d34566eb9d7555038f5fe0d31
BLAKE2b-256 3a4d340aeb293d745263adabd6de14d765d55828e3718b3161bc0efa19348f72

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