A framework for tensor-network–based quantum annealing simulation powered by belief propagation.
Project description
What is it?
This is a package for large scale tensor-networks-based simulation of quantum annealing. It uses belief propagation based approximate inference (see https://arxiv.org/abs/2306.17837, https://arxiv.org/abs/2409.12240, https://arxiv.org/abs/2306.14887) as an engine. This implementation introduces a compilation step that classifies graph nodes by degree, groups the corresponding tensors into batched representations, groups the associated messages, enabling massively parallel belief propagation and related subroutines easelly deployable on a GPU.
How to install?
- Clone this repo;
- Run
pip install .from the clonned repo under your python environment.
To validate the computation results, some examples and tests rely on an exact quantum circuit simulator available at https://github.com/LuchnikovI/qem. To install it, follow the steps below:
- Clone the repo https://github.com/LuchnikovI/qem;
- Install rust (see https://rust-lang.org/tools/install/);
- Install
maturinby runningpip install maturin .; - Run
pip install .from the clonned repo under your python environment.
How to use?
This package exposes a single entry point, run_qa, which executes the full workflow. It accepts a single argument which is a Python dictionary that fully specifies the quantum annealing task. This dictionary serves as a configuration or DSL and can be directly deserialized from JSON or other formats. For a concrete example of the configuration, see ./examples/small_ibm_heavy_hex.py.
How to run benchmarks against MQLib?
First, one need to install an MQLib wrapper awailable here, follow the instruction of README there. Now one can execute scripts in ./benchmarks_against_mqlib, every script saves a result into a separate directory with time stamp.
Available backends
Currently there are numpy and cupy backends. One can specify it in the configuration dictionary. To use cupy backend one needs to install cupy sepraratelly since it is not in the dependancies list. One can control the precision of the numpy backend by setting the environment variable export BQA_PECISION=single for the single precision and export BQA_PRECISION=double for the double precision. The precision of the cupy backend is always single. This is important to trigger fast batched matrix multiplication kernel.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bqa-0.1.3.tar.gz.
File metadata
- Download URL: bqa-0.1.3.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa7d660a1b1c60548402f71b8e8372fbd465911d359deedd17245777cdd9b84b
|
|
| MD5 |
886335d26f6194a8a174b051d7ece235
|
|
| BLAKE2b-256 |
a683c7df489aba8a0036e85fa8a1ec4905b2611455875f8e69cfc73e5a287fe7
|
File details
Details for the file bqa-0.1.3-py3-none-any.whl.
File metadata
- Download URL: bqa-0.1.3-py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.14.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cd851f184da15b53c76a3eedcc101483609ad5affabda6bb77a44cfe918c031
|
|
| MD5 |
00e6678786f646b308dcf9b4e0c6b6dc
|
|
| BLAKE2b-256 |
378febba411d0de166bfc57cb954a0bc9b1298580d5bf2940894d0755ca9fb07
|