qandle

QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library.

https://github.com/gstenzel/qandle

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

pytorch quantum-computing quantum-machine-learning
Last synced: 6 months ago · JSON representation ·

Repository

QANDLE is a fast and simple quantum state-vector simulator for hybrid machine learning using the PyTorch library.

Basic Info
Statistics
  • Stars: 8
  • Watchers: 1
  • Forks: 1
  • Open Issues: 9
  • Releases: 0
Topics
pytorch quantum-computing quantum-machine-learning
Created almost 2 years ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

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

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.

  • Versions: 24
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 131 Last month
Rankings
Dependent packages count: 9.8%
Average: 37.3%
Dependent repos count: 64.8%
Maintainers (1)
Last synced: 6 months ago

Dependencies

poetry.lock pypi
  • 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
pyproject.toml pypi
  • 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