qandle
QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library.
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.6%) to scientific vocabulary
Keywords
Repository
QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library.
Basic Info
- Host: GitHub
- Owner: gstenzel
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://gstenzel.github.io/qandle/
- Size: 420 KB
Statistics
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 9
- Releases: 0
Topics
Metadata Files
README.md
Disclaimer: THIS REPO IS CURRENTLY EXPECTING SOME DIFFICULTIES WHEN SPLITTING CIRCUIT.
WE ARE LOOKING FORWARD TO IMPROVE THE SITUATION IN THE UPCOMING RELEASE. PLEASE STAY TUNED AND LEAVE A STAR :star: TO BE NOTIFIED ONCE OUR FIXES GO LIVE.
QANDLE
QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library. Documentation and examples can be found in the QANDLE documentation, the code resides on GitHub. The paper can be found on arXiv.
Installation
bash
pip install qandle
Usage
```python import torch import qandle
Create a quantum circuit
circuit = qandle.Circuit( layers=[ # embedding layer qandle.AngleEmbedding(numqubits=2), # trainable layer, with random initialization qandle.RX(qubit=1), # trainable layer, with fixed initialization qandle.RY(qubit=0, theta=torch.tensor(0.2)), # data reuploading qandle.RX(qubit=0, name="datareuploading"), # disable quantum weight remapping qandle.RY(qubit=1, remapping=None), qandle.CNOT(control=0, target=1), qandle.MeasureProbability(), ] )
inputstate = torch.rand(circuit.numqubits, dtype=torch.float) # random input data_reuploading = torch.rand(1, dtype=torch.float) # random data reuploading input
Run the circuit
circuit(inputstate, datareuploading=data_reuploading) ```
License
This project is licensed under the MIT License - see the LICENSE file for details.
Citation
If you use QANDLE in your research, please cite the following paper:
bbl
@misc{qandle2024,
title={Qandle: Accelerating State Vector Simulation Using Gate-Matrix Caching and Circuit Splitting},
author={Gerhard Stenzel and Sebastian Zielinski and Michael Kölle and Philipp Altmann and Jonas Nüßlein and Thomas Gabor},
year={2024},
eprint={2404.09213},
archivePrefix={arXiv},
primaryClass={quant-ph}
}
Owner
- Login: gstenzel
- Kind: user
- Repositories: 1
- Profile: https://github.com/gstenzel
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: QANDLE
message: >-
Accelerating State Vector Simulation Using Gate-Matrix
Caching and Circuit Splitting
type: software
authors:
- given-names: Gerhard
family-names: Stenzel
affiliation: LMU Munich
orcid: 'https://orcid.org/0009-0009-0280-4911'
- given-names: Sebastian
family-names: Zielinski
affiliation: LMU Munich
- given-names: Michael
family-names: Kölle
affiliation: LMU Munich
- given-names: Philipp
family-names: Altmann
affiliation: LMU Munich
- given-names: Jonas
family-names: Nüßlein
affiliation: LMU Munich
- given-names: Thomas
family-names: Gabor
affiliation: LMU Munich
identifiers:
- type: other
value: 'https://arxiv.org/abs/2404.09213'
description: Arxiv
repository-code: 'https://github.com/gstenzel/qandle'
url: 'https://gstenzel.github.io/qandle/'
abstract: >-
To address the computational complexity associated with
state-vector simulation for quantum circuits, we propose a
combination of advanced techniques to accelerate circuit
execution. Quantum gate matrix caching reduces the
overhead of repeated applications of the Kronecker product
when applying a gate matrix to the state vector by storing
decomposed partial matrices for each gate. Circuit
splitting divides the circuit into sub-circuits with fewer
gates by constructing a dependency graph, enabling
parallel or sequential execution on disjoint subsets of
the state vector. These techniques are implemented using
the PyTorch machine learning framework. We demonstrate the
performance of our approach by comparing it to other
PyTorch-compatible quantum state-vector simulators. Our
implementation, named Qandle, is designed to seamlessly
integrate with existing machine learning workflows,
providing a user-friendly API and compatibility with the
OpenQASM format. Qandle is an open-source project hosted
on GitHub and PyPI.
keywords:
- quantum
- quantum-computing
- quantum-machine-learning
- pytorch
license: MIT
GitHub Events
Total
- Issues event: 2
- Watch event: 5
- Delete event: 1
- Issue comment event: 2
- Push event: 10
- Pull request event: 3
- Create event: 1
Last Year
- Issues event: 2
- Watch event: 5
- Delete event: 1
- Issue comment event: 2
- Push event: 10
- Pull request event: 3
- Create event: 1
Packages
- Total packages: 1
-
Total downloads:
- pypi 131 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 24
- Total maintainers: 1
pypi.org: qandle
QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library.
- Documentation: https://qandle.readthedocs.io/
- License: mit
-
Latest release: 0.1.12
published 10 months ago
Rankings
Maintainers (1)
Dependencies
- appdirs 1.4.4
- autograd 1.6.2
- autoray 0.6.9
- cachetools 5.3.3
- certifi 2024.2.2
- charset-normalizer 3.3.2
- colorama 0.4.6
- einops 0.7.0
- exceptiongroup 1.2.0
- filelock 3.13.3
- fsspec 2024.3.1
- future 1.0.0
- idna 3.6
- iniconfig 2.0.0
- jinja2 3.1.3
- markupsafe 2.1.5
- mpmath 1.3.0
- networkx 3.2.1
- numpy 1.26.4
- nvidia-cublas-cu12 12.1.3.1
- nvidia-cuda-cupti-cu12 12.1.105
- nvidia-cuda-nvrtc-cu12 12.1.105
- nvidia-cuda-runtime-cu12 12.1.105
- nvidia-cudnn-cu12 8.9.2.26
- nvidia-cufft-cu12 11.0.2.54
- nvidia-curand-cu12 10.3.2.106
- nvidia-cusolver-cu12 11.4.5.107
- nvidia-cusparse-cu12 12.1.0.106
- nvidia-nccl-cu12 2.19.3
- nvidia-nvjitlink-cu12 12.4.99
- nvidia-nvtx-cu12 12.1.105
- openqasm3 0.4.0
- packaging 24.0
- pennylane 0.33.1
- pennylane-lightning 0.34.0
- pluggy 1.4.0
- pytest 7.4.4
- qw-map 0.1.2
- requests 2.31.0
- rustworkx 0.14.2
- scipy 1.12.0
- semantic-version 2.10.0
- snakeviz 2.2.0
- sympy 1.12
- toml 0.10.2
- tomli 2.0.1
- torch 2.2.2
- tornado 6.4
- triton 2.2.0
- typing-extensions 4.10.0
- urllib3 2.2.1
- PennyLane ^0.33 develop
- openqasm3 ^0.4 develop
- pytest ^7.4 develop
- snakeviz ^2.2 develop
- einops ^0.7
- networkx ^3
- numpy ^1.21
- python ^3.9
- qW-Map ^0.1.2
- torch ^2.0