QuantumCircuitOpt

A Julia/JuMP Package for Optimal Quantum Circuit Design

https://github.com/harshangrjn/quantumcircuitopt.jl

Science Score: 77.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
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    5 of 11 committers (45.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Keywords

discrete-optimization mixed-integer-programming quantum-algorithms quantum-circuit quantum-circuit-synthesis quantum-computing quantum-gate-optimization

Keywords from Contributors

interactive mesh interpretability profiles graph-algorithms sequences semidefinite-programming generic projection optim
Last synced: 4 months ago · JSON representation ·

Repository

A Julia/JuMP Package for Optimal Quantum Circuit Design

Basic Info
  • Host: GitHub
  • Owner: harshangrjn
  • License: other
  • Language: Julia
  • Default Branch: master
  • Homepage:
  • Size: 9.63 MB
Statistics
  • Stars: 59
  • Watchers: 16
  • Forks: 15
  • Open Issues: 6
  • Releases: 38
Topics
discrete-optimization mixed-integer-programming quantum-algorithms quantum-circuit quantum-circuit-synthesis quantum-computing quantum-gate-optimization
Created almost 5 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog License Citation

README.md


A Julia Package for Optimal Quantum Circuit Design

Status: CI codecov version

Dev version: Documentation

QuantumCircuitOpt is a Julia package which implements discrete optimization-based methods for provably optimal synthesis of an architecture for quantum circuits. While programming quantum computers, a primary goal is to build useful and less-noisy quantum circuits from the basic building blocks, also termed as elementary gates which arise due to hardware constraints. Thus, given a desired quantum computation, as a target gate, and a set of elemental one- and two-qubit gates, this package provides a provably optimal, exact (up to global phase and machine precision) or an approximate decomposition with minimum number of elemental gates and CNOT gates. Now, this package also supports multi-qubit gates in the elementary gates set, such as the global rotation gate. Note that QuantumCircuitOpt currently supports only decompositions of circuits up to ten qubits.

Overall, QuantumCircuitOpt can be a useful tool for researchers and developers working on quantum algorithms or quantum computing applications, as it can help to reduce the resource requirements of quantum computations, making them more practical and efficient.

Installation

QuantumCircuitOpt is a registered package and can be installed by entering the following in the Julia REPL-mode: julia import Pkg Pkg.add("QuantumCircuitOpt")

Usage

  • Clone the repository.
  • Open a terminal in the repo folder and run julia --project=..
  • Hit ] to open the project environment and run test to run unit tests. If you see an error because of missing packages, run resolve.

On how to use this package, check the Documentation's quick start guide and the examples folder for several important circuit decompositions.

Video Links

For more technical details about the package, check out these video links: - November 2022: Presentation link from the Third Quantum Computing Software Workshop, held in conjunction with the International Conference on Super Computing (SC22). - July 2022: Presentation link from the JuliaCon 2022 conference. - November 2021: Presentation link from the Second Quantum Computing Software Workshop, held in conjunction with the International Conference on Super Computing (SC21).

Sample Circuit Synthesis

Here is a sample usage of QuantumCircuitOpt to optimally decompose a 2-qubit controlled-Z gate (CZGate) using the entangling CNOT gate and an one-qubit universal rotation gate (U3Gate) with three discretized Euler angles (θ,ϕ,λ):

```julia import QuantumCircuitOpt as QCOpt using JuMP using Gurobi

Target: CZGate

function target_gate() return Array{Complex{Float64},2}([1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 -1]) end

params = Dict{String, Any}( "numqubits" => 2, "maximumdepth" => 4,
"elementarygates" => ["U31", "U32", "CNot12", "Identity"], "targetgate" => targetgate(), "objective" => "minimizedepth", "decompositiontype" => "exactoptimal",

"U3θdiscretization" => -π:π/2:π, "U3ϕdiscretization" => -π:π/2:π, "U3λdiscretization" => -π:π/2:π, )

qcmoptimizer = JuMP.optimizerwithattributes(Gurobi.Optimizer, "presolve" => 1) QCOpt.runQCModel(params, qcmoptimizer) `` If you prefer to decompose a target gate of your choice, update thetargetgate()function and the set ofelementary_gates` accordingly in the above sample code.

Bug reports and Contributing

Please report any issues via the Github issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc.

QuantumCircuitOpt is being actively developed and suggestions or other forms of contributions are encouraged.

Acknowledgement

This work was supported by Los Alamos National Laboratory's LDRD Early Career Research award. The primary developer of this package is Harsha Nagarajan (@harshangrjn).

Citing QuantumCircuitOpt

If you find QuantumCircuitOpt useful in your work, we request you to cite the following paper (IEEE link, arXiv link): bibtex @inproceedings{QCOpt_SC2021, title={{QuantumCircuitOpt}: An Open-source Framework for Provably Optimal Quantum Circuit Design}, author={Nagarajan, Harsha and Lockwood, Owen and Coffrin, Carleton}, booktitle={SC21: The International Conference for High Performance Computing, Networking, Storage, and Analysis}, series={Second Workshop on Quantum Computing Software}, pages={55--63}, year={2021}, doi={10.1109/QCS54837.2021.00010}, organization={IEEE Computer Society} } Another publication which explores the potential of non-linear programming formulations in QuantumCircuitOpt is the following: IEEE link, arXiv link.

Owner

  • Name: Harsha Nagarajan
  • Login: harshangrjn
  • Kind: user
  • Location: Los Alamos
  • Company: Los Alamos National Laboratory

Citation (CITATION.bib)

@inproceedings{QCOpt_SC2021,
  title={{QuantumCircuitOpt}: An Open-source Framework for Provably Optimal Quantum Circuit Design},
  author={Nagarajan, Harsha and Lockwood, Owen and Coffrin, Carleton},
  booktitle={SC21: The International Conference for High Performance Computing, Networking, Storage, and Analysis},
  series={Workshop on Quantum Computing Software},
  pages={55--63},
  year={2021},
  doi={10.1109/QCS54837.2021.00010},
  organization={IEEE Computer Society}
}

GitHub Events

Total
  • Release event: 2
  • Watch event: 3
  • Delete event: 4
  • Issue comment event: 21
  • Push event: 43
  • Pull request event: 8
  • Create event: 7
Last Year
  • Release event: 2
  • Watch event: 3
  • Delete event: 4
  • Issue comment event: 21
  • Push event: 43
  • Pull request event: 8
  • Create event: 7

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 381
  • Total Committers: 11
  • Avg Commits per committer: 34.636
  • Development Distribution Score (DDS): 0.289
Past Year
  • Commits: 23
  • Committers: 7
  • Avg Commits per committer: 3.286
  • Development Distribution Score (DDS): 0.739
Top Committers
Name Email Commits
harshangrjn h****n@g****m 271
Owen Lockwood 4****o 59
szabino-mrszabo z****o@g****m 25
harsha h****a@p****v 6
Harsha Nagarajan h****a@m****n 6
Harsha Nagarajan h****a@l****v 5
Harsha Nagarajan h****a@p****v 4
Harsha Nagarajan h****a@l****v 2
dependabot[bot] 4****] 1
Harsha Nagarajan h****a@p****v 1
Harsha Nagarajan h****a@H****l 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 40
  • Total pull requests: 36
  • Average time to close issues: 2 days
  • Average time to close pull requests: 11 days
  • Total issue authors: 4
  • Total pull request authors: 5
  • Average comments per issue: 2.83
  • Average comments per pull request: 1.22
  • Merged pull requests: 29
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 0
  • Pull requests: 5
  • Average time to close issues: N/A
  • Average time to close pull requests: about 11 hours
  • Issue authors: 0
  • Pull request authors: 3
  • Average comments per issue: 0
  • Average comments per pull request: 1.6
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • harshangrjn (36)
  • AbhiDu96 (2)
  • fschulz21 (1)
  • JuliaTagBot (1)
Pull Request Authors
  • harshangrjn (22)
  • lockwo (8)
  • github-actions[bot] (5)
  • dependabot[bot] (4)
  • szabino-mrszabo (3)
Top Labels
Issue Labels
enhancement (5) v0.1.7 (2) bug (1) v0.2.0 (1) v0.1.8 (1)
Pull Request Labels
v0.1.8 (2) v0.5.9 (2) v0.1.9 (1) enhancement (1)

Packages

  • Total packages: 3
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 114
proxy.golang.org: github.com/harshangrjn/quantumcircuitopt.jl
  • Versions: 38
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.5%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
proxy.golang.org: github.com/harshangrjn/QuantumCircuitOpt.jl
  • Versions: 38
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.5%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago
juliahub.com: QuantumCircuitOpt

A Julia/JuMP Package for Optimal Quantum Circuit Design

  • Versions: 38
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Forks count: 9.8%
Dependent repos count: 9.9%
Stargazers count: 13.7%
Average: 18.1%
Dependent packages count: 38.9%
Last synced: 4 months ago

Dependencies

.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite