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-2.2.4.tar.gz (59.1 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-2.2.4-py3-none-win_amd64.whl (811.2 kB view details)

Uploaded Python 3Windows x86-64

pyqrack_cpu-2.2.4-py3-none-manylinux_2_39_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

pyqrack_cpu-2.2.4-py3-none-manylinux_2_35_x86_64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

pyqrack_cpu-2.2.4-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

pyqrack_cpu-2.2.4-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

pyqrack_cpu-2.2.4-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-2.2.4.tar.gz.

File metadata

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

File hashes

Hashes for pyqrack_cpu-2.2.4.tar.gz
Algorithm Hash digest
SHA256 2142e9cd19b625a883ec106cdc187b374cd905fdbb54eca3e08cec285c9093bd
MD5 ebdb9a1b3645adccaa3c408102154175
BLAKE2b-256 fb8acd85743489c961039080daea5bdf17a65a2f7d6493dcfcd4cd1047605bca

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: pyqrack_cpu-2.2.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 811.2 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_cpu-2.2.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 524b77f2dc355f3d51cd6bb9c80ba7903985c7903ae792b165fdbe4fc582953c
MD5 4c043f466064b57aa96d79129067ca39
BLAKE2b-256 c10c59388c590f18bbb02d78d77b203da67a740c57d51ce777b4162d97fef715

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.2.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 3c480fececfe7aac572cf409a5c0c96a4bd76b20bb97c5d67869bf7fb9261b71
MD5 a511f63bb746537d62dff294eafd009e
BLAKE2b-256 599cbd5919c336da5d3a33bbc6104bed9482a855d66c2c8c582df54d700e2ee4

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.2.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 d01f8384aba305c35edf0b46178c80bf75e0f41319dcce3070f7245598922670
MD5 5b160ebce9c85dda05806d0240df6d12
BLAKE2b-256 f53839389e8b5ffdac64951146bcd3d2533ec9edbd946a7bcf7642be646a261a

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.2.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 6ff90507685756791e07c2919bf512ba7a99334bec0a42737ea942f88638243a
MD5 f6a4ccf4f321aa4e85ffe0c0b79ce992
BLAKE2b-256 c5a0781109ca6490950ef528d82519db9dc35b2edb32adf7884e1d6e07821b27

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.2.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 57361d6ad5095d03236b61a6e836aa051138f1796ee9e09064c92b58b6779e24
MD5 be0c0c41aff168e040aaebf685d5c429
BLAKE2b-256 558b77475896e51f4391bcac3548af29d5f904a37832363433cc87aa7cef4bc1

See more details on using hashes here.

File details

Details for the file pyqrack_cpu-2.2.4-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyqrack_cpu-2.2.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3b79284286be949832064159fa6fc40f79dc79c91d2693bfe832ba4656339ef2
MD5 5065fd81a40fd0adf37a8cfe6f0c90a0
BLAKE2b-256 11d3c768157cd000bbe67df6fb1adcd8810c3b28effdfe2aa9adb67eeeb7a2fd

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