Skip to content

vrajan1996/awesome-quantum-software

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

bDialog

Open-Source Quantum Software Projects

Twitter Follow

Curated list of open-source developed quantum software projects.

Please read the contribution guidelines before contributing.

Also please check out the Unitary Fund's 4k$ grant project for quantum OSS!

Clone this repository into your qBraid account:

Contents

For a curated list of learning resources please check out desireevl's repo.

Quantum full-stack libraries

C++

  • avaloni - Programming language (interpreter) for classical-quantum hybrid computers.
  • CUDA-Q - Platform for accelerated quantum-classical applications on GPUs, CPUs and QPUs.
  • staq - Full stack quantum processing toolkit (arXiv paper).
  • XACC - Extreme-scale programming model for quantum acceleration within high-performance computing (arXiv paper).
  • qpp - Quantum++ is a modern C++ general purpose quantum computing library, composed solely of template header files.

Python

  • blueqat - Quantum computing SDK.
  • bosonic-qiskit - Simulate hybrid boson-qubit systems within Qiskit, implemented as a part of the Co-design Center for Quantum Advantage (C2QA) of the National Quantum Initiative.
  • Braket - Amazon's fully managed quantum computing service for building quantum algorithms.
  • Cirq - Framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
  • CUDA-Q - Platform for accelerated quantum-classical applications on GPUs, CPUs and QPUs.
  • Forest - Rigetti's software library for writing, simulating, compiling and executing quantum programs.
  • Ket - Embedded programming language that introduces the ease of Python to quantum programming.
  • Ocean - D-Wave System's suite of tools for solving hard problems with quantum computers.
  • OpenQL - Compiler framework with algorithm libraries, optimizer, scheduler, QEC, mapping, micro-code generator.
  • PennyLane - Cross-platform Python library for differentiable programming of quantum computers.
  • Perceval - Quandela's software library for programming realistic photonic quantum computers.
  • ProjectQ - Hardware-agnostic framework with compiler and simulator with emulation capabilities.
  • PyQudit - Python package for generalized and universal versions of quantum gates in N-dimensions.
  • pytket - Quantum computing toolkit for building, compiling, and executing quantum circuits (developed by Quantinuum).
  • Qadence - Pasqal's package for building differentiable digital and digital-analog quantum programs realizable on neutral atom devices.
  • quantumcat - Cross-platform open-source high-level quantum computing library focused on building applications.
  • Qibo - An open-source framework for quantum simulation, self-hosted quantum hardware control and calibration.
  • Qiskit - Framework for noisy quantum computers at the level of pulses, circuits, and algorithms (supported by IBM).
  • quantum-os - Operating system based on Linux kernel for quantum computing.
  • Strawberry Fields - Xanadu's software library for photonic quantum computing.
  • Tangelo and Tangelo-Examples - Toolkit for quantum chemistry simulation workflows on quantum computers, maintained by SandboxAQ.
  • TensorCircuit - Tensor network based quantum software framework for the NISQ era.
  • Tequila - Extensible Quantum Information and Learning Architecture developed by Alan Aspuru-Guzik's group (UofT).

Q#

  • Q# - Microsoft's quantum programming language with Visual Studio integration.

Silq

  • Silq - Silq is a high-level quantum programming language with safe uncomputation and intuitive semantics.

Quantum simulators

Assembly

  • Quplexity - Modular toolkit for QC simulators. Quplexity offers essential mathematical functions and logic relative to quantum computer simulation. Quplexity is written in ARM(64) and x86 Assembly, which results in improved performance and "weight" benefits.

C

  • QuaC - Parallel time-dependent open quantum systems solver.
  • QuEST - Quantum Exact Simulation Toolkit is a high performance multicore simulator of universal quantum circuits.
  • TNQVM - Tensor Network QPU Simulator for Eclipse XACC.

Common Lisp

  • QVM - Rigetti's high-performance quantum virtual machine.

Coq

C++

  • Huawei HiQsimulator - Single-amplitude, Full-amplitude and Error-correction circuit simulation engine.
  • Intel Quantum Simulator - Distributed qubit register quantum simulator using OpenMP and MPI.
  • JKQ-DDSIM - Error-free quantum simulator using decision diagrams as underlying data structure (arXiv / IEEE).
  • PennyLane Lightning - Fast state-vector simulator written in C++. GPU support. Python interface via PennyLane.
  • qFlex - Flexible high-performance simulator for verifying and benchmarking quantum circuits implemented on real hardware.
  • Qiskit Aer - High performance simulator for quantum circuits that includes noise models (supported by IBM).
  • QCEAD - C++ program to both simulate a quantum computer and use parallel evolutionary techniques to design algorithms.
  • QCSim - Quantum computing simulator with many algorithms as examples and tests (blog post).
  • QPlayer - Light-weight, scalable and fast quantum Schrödinger simulator (paper).
  • Qrack - Comprehensive qubit and gate implementation for developing universal virtual quantum processors.
  • qSim - High level, elementary simulation library.
  • QSim - Schrödinger and Schrödinger-Feynman simulators for quantum circuits.
  • Quantum++ - High-performance general purpose quantum simulator (can simulate d-dimensional qudits) (paper).
  • tweedledum - Library for synthesis, compilation, and optimization of quantum circuits.

F#

GoLang

  • Q - Quantum Computation Simulator written purely in GoLang.

Java

  • Strange - Java API that can be used to create Quantum Programs.

JavaScript

  • jsquil - JavaScript interface for writing Quil programs.
  • Quantum Circuit Simulator - Smoothly runs 20+ qubit simulations in browser or on node.js server.
  • Quirk - Drag-and-drop quantum circuit simulator in your browser.
  • Quantum JavaScript (Q.js) - Drag-and-drop circuit editor, simulator, documented API, text-as-circuit DSL, concept primers.
  • Quantum-computing-playground - Browser-based simple IDE interface to run, visualize and debug quantum programs.
  • Quantum tensors - JavaScript / TypeScript package for sparse tensor operations on complex numbers for quantum computing.

Julia

  • BosonSampling.jl - Efficient simulation of multiphoton interference.
  • Cliffords.jl - Efficient calculation of Clifford circuits in Julia.
  • IonSim.jl - Simulate the dynamics of a configuration of trapped ions interacting with laser light.
  • KadanoffBaym.jl - Adaptive many-body time evolution of non-equilibrium Green functions.
  • QSimulator.jl - Unitary and Lindbladian evolution in Julia.
  • QuantumInfo.jl - Julia library for quantum information related calculations.
  • QuantumOptics.jl - Numerical framework to simulate various kinds of open quantum systems in Julia.
  • RandomQuantum.jl - Package for generating random quantum states and processes.
  • Yao.jl - Extensible, Efficient Quantum Algorithm Design for Humans.

Python

  • Graphix - Measurement-Based Quantum Computing (MBQC) compiler, simulator and QPU interface.
  • Horqrux - Jax-based quantum state vector simulator tailored for quantum machine learning from Pasqal.
  • Interlin-q - Quantum network simulator imitating distributed quantum systems with interconnect communication between nodes.
  • MentPy - Python package for creating and simulating Measurement-based Quantum Computating (MBQC) programs.
  • MISTIQS - Generating/compiling/executing quantum circuits for simulating quantum many-body dynamics of systems.
  • PIQS - Efficient simulation of open quantum dynamics of identical qubits.
  • PyQTorch - PyTorch-based state vector simulator designed for quantum machine learning from Pasqal.
  • QCircuits - User-friendly quantum circuit simulator designed for students and newcomers to quantum computing.
  • QCompute - Baidu's software development kit for designing quantum circuits and simulating on a high-performance simulator.
  • Qibo - Framework for quantum simulation with hardware acceleration using just-in-time compilation.
  • QTop - Simulation and visualization of topological quantum computers.
  • quantum-computing - Functionally complete simulator for universal quantum computing in Python
  • QuForge - Python package for qudit simulation.
  • quimb - Easy but fast python library for quantum information and many-body calculations, including with tensor networks.
  • Quintuple - Simulating the 5-qubit processor of the IBM Quantum Experience.
  • QuPy - Quantum circuit simulator for both CPU and GPU.
  • QuSpin - Exact diagonalization and dynamics of arbitrary boson, fermion and spin many-body systems.
  • QuTiP - User-friendly and efficient numerical simulations of a wide variety of open quantum systems.
  • SeQuencing - Construct and simulate realistic quantum control sequences using QuTiP.
  • SimulaQron - Application level simulator of a quantum network.
  • SOQCS - Library to define, simulate, and study non-ideal quantum optical circuits (API provided both in Python and C++).
  • Stim - Fast stabilizer circuit simulator.
  • SQUANCH - Distributed simulation framework for quantum networks and channels.
  • QuNetSim - Quantum network simulation framework.
  • The Walrus - Xanadu's library for simulating Gaussian Boson Sampling.
  • gdsfactory and plugins - Open Source Python library designed for crafting chips (Photonics, Analog, Quantum, MEMs, and more), 3D printed objects, and PCBs. Plugins for Simulating Analog, RF, and Photonics circuits.

Rust

  • QCGPU - High-performance GPU-accelerated quantum computer simulation outlined in this arXiv paper.
  • Quriust - A blazing fast Rust library for simulating quantum circuits. Only for quriust ones.
  • RustQIP - Rust Quantum Computing library leveraging graph building to build efficient quantum circuit simulations.

Swift

Quantum Analog Hamiltonian

  • Bloqade - Package for the quantum computation and quantum simulation based on the neutral-atom architecture.
  • Pulser - Python library for pulse-level/analog control of neutral atom devices.

Quantum annealing

C++

  • C-to-D-Wave - Compile a very small subset of C to a D-Wave Hamiltonian function

Go

  • edif2qmasm - Compile Verilog, VHDL, and other hardware-description languages to a D-Wave Hamiltonian function
  • QA Prolog - Compile a subset of Prolog to a D-Wave Hamiltonian function

Julia

  • QAOA.jl - Simulate quantum annealing and mean-field quantum annealing in Julia.

Python

  • chimera_embedding - Algorithms to generate native-structured embeddings for Chimera graphs.
  • dimod - Shared API for Ising and QUBO problems.
  • dwavebinarycsp - Map constraint satisfaction problems with binary variables to binary quadratic models.
  • dwave-cloud-client - Min. implementation of the REST interface to communicate with D-Wave's Solver API.
  • dwave_neal - Implementation of a simulated annealing sampler.
  • dwave_networkx - Exploration and analysis of network graphs.
  • dwave-system - API for easily incorporating D-Wave quantum annealers as samplers in the Ocean software stack.
  • embedding_utilities - Mapping samples between original and embedded graph.
  • micro_client_sapi_dimod - Dimod wrapper for the D-Wave Micro Client.
  • minorminer - Heuristic tool for minor graph embedding.
  • penaltymodel - Utilities and interfaces for using penalty models.
  • QMASM - Quantum macro assembler for D-Wave systems
  • qubo-nn - Classifying, auto-encoding and reverse-engineering QUBO matrices. Also includes 20 problem formulations.

Python, C & Matlab

  • Qbsolv - QUBO solver with D-Wave or classical tabu solver backend.

Quantum algorithms

C++

  • XACC VQE - Variational quantum eigensolver built on XACC for distributed, and shared memory systems.

HTML

  • myQShor - Quantum implementation of Shor's algorithm.

Julia

  • QAOA.jl - Implementation the Quantum Approximate Optimization Algorithm (QAOA) in Julia.
  • QuantumTomography.jl - Julia package to perform quantum state and process tomography.

Python

  • Adapt - Algorithms for adaptive refinement of measurements.
  • Arline Quantum - Library with implementation of quantum gates and hardware, a part of Arline Benchmarks project.
  • Boson Sampling - Library to calculate interferometer output probabilities given Fock state inputs to help better understand Aaronson-Arkhipov Boson Sampling arXiv:1011.3245 [quant-ph]
  • FermiLib - Software for analyzing fermionic quantum simulation algorithms with ProjectQ.
  • Grove - Quantum algorithms implemented using Rigetti's pyQuil.
  • G/SG Morph - Quantum annealing algorithms for Graph/Subgraph Isomorphism based on Calude et al.'s paper "QUBO formulations for the graph isomorphism problem and related problems" 10.1016/j.tcs.2017.04.016
  • OpenFermion - Compiling and analyzing quantum algorithm for quantum chemistry simulations.
  • OpenQAOA - Multi-backend SDK to create, customise and execute QAOA on NISQ devices and simulators.
  • Paddle Quantum - Quantum machine learning platform to construct & train quantum neural networks, developed by Baidu.
  • PyZFS - Package to compute zero-field-splitting tensors for molecules and spin quantum bits in semiconductors.
  • QFog - Framework for analyzing both classical and quantum Bayesian Networks.
  • QGrad - Library to integrate automatic differentiation tools such as JAX with QuTiP and related quantum software packages.
  • Qiskit Nature - Quantum Chemistry including ground state, excited states and dipole moment calculations.
  • QPanda - QPanda is a quantum computing framework that can be used to build, run, and optimize quantum algorithms.
  • Qualtran - A library for expressing and analyzing Fault Tolerant Quantum algorithms.
  • Quantum_Edward - Python tools for supervised learning by Quantum Neural Networks
  • QuantumFlow - Quantum Algorithms Development Toolkit e.g. allowing for backpropagation with QAOA.
  • Quantum TSP - Tutorials on solving Travelling Salesman Problem using quantum computing (QAOA).
  • Qudit Team - Repository to extend Qiskit versatility to higher dimensional quantum states.
  • spin_qudit_tomography - Code used in spin tomography using qudits.
  • Tensorflow Quantum - Library for hybrid quantum-classical machine learning.
  • pyRiemann-qiskit - Library for machine learning and quantum programming based on pyRiemann and Qiskit projects.
  • VQF - Implementation of Variational Quantum Factoring algorithm (in pyQuil)
  • WebMark - Web platform for benchmarking quantum computing algorithms.
  • XACC Examples - Example code using XACC for quantum computing.
  • XACC QChem - QPU Benchmarks for Quantum Chemistry via XACC, Psi4 and OpenFermion.

Q#

  • Quantum Katas - Programming exercises for learning Q# and quantum computing.

Quantum compilers

C++

  • Catalyst - AOT/JIT compiler for hybrid quantum computing beyond NISQ. Written in MLIR. Python frontend via PennyLane.
  • QCOR - C++ language extension and associated compiler implementation for hybrid quantum-classical programming.
  • ScaffCC - Compilation, analysis and optimization framework for the Scaffold quantum programming language.
  • TKET - C++ library for placement, routing, and optimization of quantum circuits (developed by Quantinuum).
  • tweedledum - C++17 library for analysis, compilation/synthesis, and optimization of quantum circuits.

Mathematica

  • UniversalQCompiler - Synthesis of isometries (including unitaries and state preparation), channels and POVMs.

Julia

  • QuantumCircuitOpt.jl - Julia package for provably optimal decompositions and compilations of quantum circuits

Python

  • Arline Benchmarks - Automated benchmarking platform for quantum compilers, quantum hardware and quantum algorithms.
  • BQSKit - Berkeley Quantum Synthesis Toolkit is an optimizing quantum compiler and related tool-set.
  • Mitiq - Cross-platform, error-mitigating quantum compiler from Unitary Fund.
  • NchooseK - Constraint-programming system that compiles to both circuit-model quantum computers and quantum annealers.
  • PyZX - Python library for quantum circuit rewriting and optimisation using the ZX-calculus.
  • QEDA - Quantum electronic design automation software for optical circuits using QASM.
  • QGL2 Compiler - Language compiler for imperative Quantum Gate Language (QGL).
  • Qiskit Terra - Python library for quantum circuit rewriting and optimization (supported by IBM).
  • Qiskit ZX transpiler - Transpiler pass for Qiskit which uses ZX-calculus for circuit optimization.
  • Qlasskit - Compiler from Python language to quantum circuits and binary quadratic models.
  • Qubiter - Quantum compiler with Python wrapper for LAPACK's CS Decomposition to build a binary tree of matrices.
  • SAT Circuits Engine - Qiskit-based high-level quantum circuits synthesis engine for n-SAT problems.

Rust

  • TKET2 - Rewrite based toolkit for optimization of quantum programs (version 2 of the TKET quantum compiler).

Common Lisp

  • quilc - Rigetti's optimizing Quil compiler.

Quantum converters

Javascript

  • qconvert-js - Quantastica's quantum programming language converter in Javascript.

Python

  • qconvert - Quantastica's quantum programming language converter in Python.

Quantum assembly

  • Blackbird - Open-source quantum instruction language currently used for Xanadu's photonic hardware.
  • OpenQASM - Open-source quantum assembly language.
  • QMASM - Quantum macro assembler for D-Wave's quantum annealers.
  • Quil - Open hybrid quantum/classical instruction set currently used by Rigetti. Parser

Quantum control

Python

  • C3 - Open-loop, closed-loop and automated Control, Calibration and Characterization of quantum devices.
  • Krotov - Python implementation of Krotov's method for quantum optimal control.
  • Qibo - Qibo provides a platform agnostic quantum hardware control module with drivers for multiple instruments.
  • Quanlse - Quanlse provides quantum control solutions via a cloud SDK, developed by Baidu Quantum.

Quantum interoperability

  • Digital Soul - Unified platform for CPU, GPU, FPGA, and Quantum Computing.
  • scikit-quant - This is a package to improve interoperability between different quantum computer software packages.

Quantum error correction

Julia

  • CodingTheory - Julia package for constructing and analyzing classical and quantum error-correcting codes.

Python

  • PyMatching - Python package for decoding quantum error correcting codes with minimum-weight perfect matching.
  • qecsim - Python package for simulating quantum error correction using stabilizer codes.
  • Qiskit Experiments - Python package for quantum error correction experiments (supported by IBM).
  • Qsurface - Python package for simulation and visualization of quantum error-correction on surface codes.

Quantum and post-quantum cryptography

C

  • liboqs - C library for quantum-resistant cryptographic algorithms.
  • openssh - OpenSSH with quantum-safe key exchange algorithms.
  • openssl - OpenSSL with quantum-safe cryptographic algorithms.
  • PQClean - Clean, portable, tested implementations of post-quantum cryptography.
  • TQ42 Cryptography - Post-quantum algorithms, hash functions, digital signature, key encapsulation mechanism, PRNG, and key management functions.

Python

Experimental quantum computing

Julia

  • Qlab.jl - Generic lab tools in Julia.

Matlab

  • Qlab - Measurement and control software for superconducting qubits.

Python

  • ARTIQ - Next-generation control system for quantum information experiments.
  • OLSQ - OpenQASM package to perform optimal layout synthesis for quantum computing.
  • pyEPR - Automated Python module for the design and quantization of Josephson quantum circuits.
  • PyRPL - Turn your RedPitaya into a powerful DSP device, suitable as a digital lockbox and measurement device in quantum optics.
  • QCoDeS - Python-based data acquisition framework for quantum experiments.
  • QFlow-lite - Machine Learning tools for autotuning quantum dot experiments.
  • QGL - Domain-specific language embedded in Python for specifying pulse sequences.
  • Qiskit Metal - Quantum hardware design and analysis.
  • QTT - Quantum Technology Toolbox is a framework for the tuning and calibration of quantum dots and spin qubits.
  • Quantify - Data acquisition platform focused on Quantum Computing and solid-state physics experiments.
  • qupulse - Quantum computing pulse parametrization and sequencing framework (formerly qc-toolkit).
  • scqubits - Simulating superconducting qubits, obtaining energy spectra, plotting energy levels and more.
  • QEDA - Quantum Electronics Design Automation - The RTL of Quantum Computing!

Quantum fun

Board games

  • Entanglion - The world’s first open source quantum computing board game. For 2 players.

F#

Python

Python & JavaScript

JavaScript

Scala

  • feyn - Puzzle game for the browser in which you need to find the combination of gates that the qubits need to pass.

Quantum tools

Mathematica

  • Quantum - Free Mathematica add-on for Dirac Bra-Ket Notation, Quantum Algebra, Quantum Computing and the QHD approximation to the Heisenberg Equations of Motion.
  • QI - Toolkit for common quantum information functions.

Python

  • Arline Quantum - Arline Quantum is an open-source library providing basic functionality for creating and manipulating quantum circuits. It also contains a list of mock quantum hardware.
  • Covalent - Tool for running high performance/quantum workflows on advanced computing hardwares.
  • Gridsynth-Python-wrapper - Wrapper for using Gridsynth in Python/
  • IBM Q bot - Bot for Slack and Telegram to monitor the load of IBM Q quantum computers.
  • orqviz - Library to easily visualize the loss landscape of variational quantum algorithms.
  • pulsemaker - Python widget library for designing pulses and pulse schedules for quantum computing hardware.
  • pymablock - Package for the construction of effective Hamiltonians using quasi-degenerate perturbation theory.
  • pyQuirk - Python widget for Quirk to be used in Jupyter notebooks, JupyterLab, and the IPython kernel.
  • qBraid - Transpiles quantum circuits to and from Cirq, Qiskit, Amazon Braket, Pennylane, Pyquil and allows for execution on any backend.
  • qonduit - Python library with visualization tools and workflows for quantum computing that utilize the best of what’s available.
  • qprof - gprof-compatible profiler for quantum programs.
  • QRAND - Multiplatform and multiprotocol quantum random number generator for arbitrary probability distributions.
  • QuantumGraphs - Grow and study random graphs by a continuous, randomly collapsing quantum walk.
  • toqito - Framework to study problems pertaining to entanglement theory, nonlocal games, and other aspects of quantum information.
  • ZXLive - GUI editor for ZX diagrams.

TypeScript

  • SpookyIDE - IDE designed for quantum computing.

Others

Quantum data

  • QDataSet - Quantum datasets for the training and development of QML algorithms.

Abandoned projects

2+ years of inactivity. Feel free to reanimate, document and contribute to some of this work!

  • BLACK-STONE - Specification and implementation of quantum common lisp, for gate-model quantum computers.
  • goqu - Quantum computing simulation library for GoLang.
  • libquantum - C library for quantum computing and quantum simulation.
  • libQuantumJava - Crude translation from the C implementation of libquantum to a Java version.
  • jquil - Java library for quantum programming using Quil.
  • pQCS - Parallel quantum circuit synthesis with optimal T-count.
  • PyQLab - Library for instrument control and superconducting QIP experiments.
  • PySimulator - Python with C++ backend simulator for superconducting circuits.
  • QACG - Quantum Arithmetic Circuit Generator in Haskell.
  • QCL - High level, hardware-agnostic programming language for quantum computers (syntax like C or Pascal).
  • QCViewer - Visual quantum circuit design and simulation tool.
  • QGL.jl - Performance orientated QGL compiler.
  • Qlmp - Interpreter for the functional quantum programming language Qumin.
  • Qiskit Aqua - Library of various quantum algorithm implemented with Qiskit.
  • qiskit-ignis - Tools for quantum hardware verification, noise characterization, and error correction.
  • Qiskit Tutorial - Jupyter notebook filled with tutorials for Qiskit.
  • Qiskit-JS - Quantum information software kit for JavaScript (supported by IBM).
  • QOCS - Quantum OCaml Circuit Simulator is a functional approach to simulating quantum gates.
  • QuantumUtils - Tools for quantum control, simulation, channel representation conversion, and perturbations.
  • Quantum Virtual Machine - Reference implementation of Rigetti's Quantum Virtual Machine.
  • Quince - Node-based GUI that allows for graphical configuration of qubit experiments in Auspex.
  • Quipper - Scalable functional programming language for quantum computing based on Quantum Lambda Calculus.
  • QuSim - Ideal noise-free multi-qubit simulator written in 150 lines of code.
  • QSEL - Quantum programming language putting entanglement and superposition front and center.
  • sapi_dimod - Dimod wrapper for D-Wave's Solver API (SAPI).
  • Squankum - Visual Java quantum simulator.
  • 8Q - 8 Qbit, Photonic Quantum Computer.

Contributing

See the contribution guidelines.

License

CC0

To the extent possible under law, the Quantum Open Source Foundation has waived all copyright and related or neighboring rights to this work.

About

Curated list of open-source quantum software projects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published