QXTools

QXTools: A Julia framework for distributed quantum circuit simulation - Published in JOSS (2022)

https://github.com/juliaqx/qxtools.jl

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords from Contributors

standardization
Last synced: 6 months ago · JSON representation

Repository

Julia package for quantum circuit simulation using tensor networks

Basic Info
  • Host: GitHub
  • Owner: JuliaQX
  • License: mit
  • Language: Julia
  • Default Branch: master
  • Size: 847 KB
Statistics
  • Stars: 40
  • Watchers: 5
  • Forks: 4
  • Open Issues: 6
  • Releases: 10
Created about 5 years ago · Last pushed about 4 years ago
Metadata Files
Readme Contributing License Zenodo

README.md

QXTools

Stable Dev Build Status Coverage

QXTools is a Julia package for simulating quantum circuits using tensor networking approaches. It targets large distributed memory clusters with hardware accelerators. It was developed as part of the QuantEx project, one of the individual software projects of WP8 of PRACE 6IP.

QXTools depends on a number of other Julia packages developed that were also developed as part of the QuantEx project. These include QXZoo which is capable of generating and manipulating quantum circuits, QXTns which features data structures and functions for manipulating tensor networks, QXGraphDecompositions which implements a number of graph algorithms for finding good contraction plans and QXContexts which is designed to run on large distributed clusters.

Documentation can be found here.

The design and implementation of QXTools and related packages was inspired by many other frameworks and packages including ITensors.jl, TensorOperations.jl, Yao.jl, TAL-SH and ExaTN.

Installation

QXTools is a Julia package and can be installed using Julia's inbuilt package manager from the Julia REPL using.

import Pkg Pkg.add("QXTools")

Example usage

An example of how QXTools can be used to calculate a set of amplitudes for small GHZ preparation circuit looks like

``` using QXTools using QXTools.Circuits

Create ghz circuit

circ = createghzcircuit(3)

Convert the circuit to a tensor network circuit

tnc = converttotnc(circ)

Find a good contraction plan

plan = flowcuttercontraction_plan(tnc; time=10)

Contract the network using this plan to find the given amplitude for different outputs

@show QXTools.singleamplitude(tnc, plan, "000") @show QXTools.singleamplitude(tnc, plan, "111") @show QXTools.single_amplitude(tnc, plan, "100") ```

This is only recommended for small test cases. For larger scale runs one can call the generate_simulation_files which will do the conversion to a network, find the contraction plan and create output files describing the required calculations. For example

``` using QXTools using QXTools.Circuits

Create ghz circuit

circ = createghzcircuit(3)

generatesimulationfiles(circ, "ghz_3", time=10) ```

will generate the files: - ghz_3.qx: A DSL file with instructions - ghz_3.jld2: A data file with initial tensors - ghz_3.yml: A parameter file with parameters controlling the simulation

These can be used as input to QXContexts to run the simulation on distributed clusters. For more details and options see the documentation at docs.

Contributing

Contributions from users are welcome and we encourage users to open issues and submit merge/pull requests for any problems or feature requests they have. The CONTRIBUTING.md has further details of the contribution guidelines.

Building documentation

QXTools.jl using Documenter.jl to generate documentation. To build the documentation locally run the following from the docs folder.

The first time it is will be necessary to instantiate the environment to install dependencies

julia --project -e 'import Pkg; Pkg.instantiate()'

and then to build the documentation

julia --project make.jl

To serve the generated documentation locally use

julia --project -e 'using LiveServer; serve(dir="build")'

Or with python3 using from the docs/build folder using

python3 -m http.server

The generated documentation should now be viewable locally in a browser at http://localhost:8000.

Owner

  • Name: JuliaQX
  • Login: JuliaQX
  • Kind: organization

JOSS Publication

QXTools: A Julia framework for distributed quantum circuit simulation
Published
February 15, 2022
Volume 7, Issue 70, Page 3711
Authors
John Brennan ORCID
Irish Centre for High-End Computing, Ireland
Lee O’Riordan
Irish Centre for High-End Computing, Ireland
Kenneth Hanley
Irish Centre for High-End Computing, Ireland
Myles Doyle
Irish Centre for High-End Computing, Ireland
Momme Allalen
Leibniz Supercomputing Centre
David Brayford
Leibniz Supercomputing Centre
Luigi Iapichino
Leibniz Supercomputing Centre
Niall Moran ORCID
Irish Centre for High-End Computing, Ireland
Editor
Jarvist Moore Frost ORCID
Tags
Julia Qunatum computing Simulation Tensor networks

GitHub Events

Total
  • Watch event: 1
  • Fork event: 1
Last Year
  • Watch event: 1
  • Fork event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 73
  • Total Committers: 4
  • Avg Commits per committer: 18.25
  • Development Distribution Score (DDS): 0.425
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Niall Moran n****n@i****e 42
John Brennan j****n@i****e 24
mlxd l****n@g****m 4
github-actions[bot] 4****] 3
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 23
  • Total pull requests: 31
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 8 days
  • Total issue authors: 6
  • Total pull request authors: 4
  • Average comments per issue: 2.17
  • Average comments per pull request: 0.45
  • Merged pull requests: 23
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • nmoran (12)
  • brenjohn (6)
  • goerz (2)
  • obliviateandsurrender (1)
  • GiggleLiu (1)
  • JuliaTagBot (1)
Pull Request Authors
  • nmoran (13)
  • github-actions[bot] (10)
  • brenjohn (7)
  • danielskatz (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 10
juliahub.com: QXTools

Julia package for quantum circuit simulation using tensor networks

  • Versions: 10
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.9%
Stargazers count: 16.0%
Average: 19.2%
Dependent packages count: 23.0%
Forks count: 28.1%
Last synced: 6 months ago