Open-Source Quantum Software Projects
There is a curated list of open-source quantum software projects available on GitHub. It is organized by type of software and the language the tool was written in and provides links to the location of the tool. The list contains many of the tools listed below, but has even more including experimental, fun, and abandoned projects.
Microsoft Quantum Development Kit
Microsoft has released a preview version of their Quantum Development Kit that appears to supercede their earlier LIQUi|> software. This kit features a newly named quantum programming language called Q#, integration with their Visual Studio development environment, simulators that run on either a local system or their powerful Azure cloud platform, and rich libraries and code samples that can be used as building blocks. You can down this software here.
IBM Quantum Experience
IBM has put an experimental 5 qubit gate-level quantum processor on the web and is allowing members of the public to apply to get access to it. At the IBM Quantum Experience website there are four modules; a short tutorial that explains the basics of quantum computation and instructions on how to use it, a quantum composer that allows one to configure quantum gates for the qubits, a simulator which allows one to simulate their configuration before running it on the actual machine, and finally access to the machine itself which allows one to run their configuration and view the results. You can access the IBM Quantum Experience website here and you can also see my “First Looks” review of it here. IBM has also released an associated software API called QISKIT that can be used with the IBM Quantum Experience and you can access it on GitHub here.
The Rigetti Forest suite consists of a quantum instruction language called Quil, an open source Python library for construction Quil programs called pyQuil, a library of quantum programs called Grove, and a simulation environment called QVM standing for Quantum Virtual Machine. pyQuil and Grove are open source programs available on Github. Users would develop their programs using pyQuil and Grove on their own computer and then submit them to QVM for simulation over a web portal that is available for registered users. You can access the Forest home page which contains documentation, GitHub links and a workshop video on the Rigetti web site here.
CAS-Alibaba Quantum Computing Laboratory – Superconducting Quantum Computer
The CAS-Alibaba Quantum Company Laboratory is providing access to an 11-qubit superconducting quantum computing that is hosted on the Alibaba cloud. The hardware system is available through an online interface where users can write quantum circuits, remotely execute them, and download the results over the cloud. The website supports running a circuit on both the 11 bit quantum computer as well as a simulator. We have not found a manual for this system yet, but it uses a graphical interface which is mostly self-explanatory. You can view a video demo showing usage of the system here and access the sign-up page to get on the system here.
ProjectQ is an open-source software framework for quantum computing implemented in Python. It allows users to implement their quantum programs in Python using a powerful and intuitive syntax. ProjectQ can then translate these programs to any type of back-end, be it a simulator run on a classical computer or an actual quantum chip including the IBM Quantum Experience platform. Other hardware platforms will be supported in the future. Links to all the code and documentation as well as well as a library called FermiLib to analyze fermionic quantum simulation problems can be found at the ProjectQ web site here.
Cirq is an open source Python library for writing, manipulating, and optimizing Noisy Intermediate Scale Quantum (NISQ) circuits and running them against quantum computers and simulators. It is currently in an alpha release state and can also be used with OpenFermion-Cirq, a platform for developing quantum algorithms for chemistry problems. Several other software companies are also working with Cirq as early adopters. Cirq is being promoted by members of the Google AI Quantum Team, but it is not an official Google product.
CirqProject Q is a port between ProjectQ and Cirq that provides two main functions. First, it is a ProjectQ backend that converts a ProjectQ algorithm to a cirq.Circuit. And second, it can decompose ProjectQ common gates to native Xmon gates that can be used to simulate a Google quantum computer with ProjectQ.
PennyLane and Strawberry Fields from Xanadu
Xanadu provides two different software products for programming quantum computers. The first is called PennyLane and is a cross-platform Python library for quantum machine learning, automatic differentiation, and optimization of hybrid quantum-classical computations. PennyLane is interesting because it not only supports Xanadu’s continuous various photonic technology, but it also has plug-ins to support gate based platforms including ProjectQ and IBM’s Qiskit. The second product is called Strawberry Fields and is a full-stack Python library for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits such as the quantum hardware that Xanadu is developing.
Quantum User Interface (QUI)
The University of Melbourne has developed an intuitive programming and simulation environment called QUI which is designed to enable users to visualize and understand the inner workings of a quantum computer. It has a very easy-to-use interface that allows a user to drag-and-drop quantum gates for creating a circuit. One of the key features of the program is its ability to display visualizations of the quantum computer’s state at every stage in the program. The program appears to support up to five qubits, has very good graphics and allows a user to see results using Bloch spheres, tables, and probability graphs. QUI is hosted on a remote cluster of servers at the university and is openly available to anyone who registers to be a user.
Quirk is a drag-and-drop simulator that runs in your web browser. It continuously re-simulates as you edit the circuit, providing immediate feedback. It is very good at small-scale iterative experimentation and provides excellent, intuitive graphics for a maximum of 16 qubits.
Qibo is an open-source high-level API provided by Qilimanjaro, written in Python and capable of running a quantum algorithms on top of different quantum computers and simulators. It currently supports the IBM real and virtual machines, the Rigetti virtual machine, and Qilimanjaro’s virtual machine called VQMlite. A key goal is to provide a standard interface that can be applied to many different backends and we expect other backends to be supported in the future. Qibo is currently in an Alpha release and you can apply to get access to it here. For more details, you can view Qilimanjaro’s blog posting here.
XACC (eXtreme-scale ACCelerator) is a programming model and software framework that enables quantum acceleration within standard or HPC software workflows. XACC follows a coprocessor machine model that is independent of the underlying quantum computing hardware, thereby enabling quantum programs to be defined and executed on a variety of QPUs types through a unified application programming interface. XACC currently supports the IBM, Rigetti, and D-Wave quantum processors, as well as a number of quantum computer simulators. You can download XACC from GitHub here, read the documentation here and view a paper posted on arXiv here.
QuTiP: Quantum Toolbox in Python
QuTiP is open-source software for simulating the dynamics of open quantum systems. The QuTiP library depends on the excellent Numpy, Scipy, and Cython numerical packages. In addition, graphical output is provided by Matplotlib QuTiP aims to provide user-friendly and efficient numerical simulations of a wide variety of Hamiltonians, including those with arbitrary time-dependence, commonly found in a wide range of physics applications such as quantum optics, trapped ions, superconducting circuits, and quantum nanomechanical resonators. QuTiP is freely available for use and/or modification on all major platforms such as Linux, Mac OSX, and Windows. Being free of any licensing fees, QuTiP is ideal for exploring quantum mechanics and dynamics in the classroom.
OpenFermion is an open source chemistry package for quantum computers. It can be used as a tool for generating and compiling physics equations which describe chemical and material systems into representations which can be interpreted by a quantum computer. The most effective quantum algorithms for these problems build upon and extend the power of classical chemistry packages such as Psi4 and PySCF used and developed by research chemists across government, industry and academia. The software includes several plug-ins to run on these packages and also is able to run on the Rigetti Forest and ProjectQ frameworks to run on a variety of different quantum computers. You can download the software from GitHub here.
QX Quantum Computing Simulator
The QX Simulator is a universal quantum computer simulator developed at QuTech. The QX allows quantum algorithm designers to simulate the execution of their quantum circuits on a quantum computer. The simulator defines a low-level quantum assembly language namely Quantum Code which allows the users to describe their circuits in a simple textual source code file. The source code file is then used as the input of the simulator which executes its content.
Quantum Algorithm Zoo
Stephen Jordan from NIST has cataloged dozens of different algorithms that could theoretically offer substantial speedup when run on a quantum computer. Each algorithm is described in a single paragraph that also includes an estimate of the speedup and links to references and technical papers that described the algorithm in more detail. The link to this comprehensive catalog is here.
ScaffCC is a compiler and scheduler for the Scaffold programing language. It is written using the LLVM open-source infrastructure for the purpose of writing and analyzing code for quantum computing applications. It enables users to compile quantum applications written in Scaffold to a low-level quantum assembly format (QASM), apply error correction, and generate time and area metrics. ScaffCC is written to be scalable up to problem sizes where quantum algorithms outperform classical ones, and provides valuable insight into the overheads involved and possible optimizations for a realistic implementation on a future quantum device. ScaffCC includes one of the most extensive quantum application benchmark suites and the beta release can be found on GitHub here.
Qbsolv from D-Wave
D-Wave has released a tool that takes large Quadratic Unconstrained Binary Optimization (QUBO) problems and partitions them into smaller sub-QUBOs. The sub-QUBOs are sized to fit into the capacity and topological constraints of the D-Wave quantum processor. The sub-QUBOs can also be solved classically using a tabu search algorithm built into the Qbsolv. Since the D-Wave processor is currently limited to 1000 qubits moving to 2000 qubits later in 2017, this program helps users tackle problems that are many times larger than would fit in a single D-Wave quantum processor. D-Wave has made this software open source so that users can modify it for their own needs. The software along with source code and a technical manual are available from GitHub here.
Quantum Computing Playground
Quantum Computing Playground was developed in 2014 by a group of Google engineers as a browser-based WebGL Chrome Experiment. It features a GPU-accelerated gate level quantum computer with a simple IDE interface, and its own scripting language with debugging and 3D quantum state visualization features. Quantum Computing Playground can efficiently simulate quantum registers up to 22 qubits, run Grover’s and Shor’s algorithms, and has a variety of quantum gates built into the scripting language itself. You can access this program by clicking here but it does assume that the user is already familiar with quantum computers and programming techniques. There is a Help page that provides some documentation and a Step-by-step Demo button that gives you a quick video demo of how to use it. The web page strongly recommends that you run Quantum Playground with the Google Chrome browser.
Microsoft has released a software architecture and tool suite for quantum computing. This tool suite is available without charge and it includes a programming language, optimization and scheduling algorithms, and quantum simulators. The tool is called LIQUi|> which stands for Language-Integrated Quantum Operations (and yes, the last two characters are the ket symbol). LIQUi|> can be used to translate a quantum algorithm written in the form of a high-level program into the low-level machine instructions for a quantum device. Microsoft has this overview Help page that describes the basic functionality of LIQUi|>. The overview web page also contains an excellent video tutorial that shows you how to install and operate LIQUi|>. The software suite itself can be downloaded from the GitHub site here. Although LIQUi|> is still available on GitHub, it appears to have been superseded by the Microsoft Quantum Development kit mentioned above.
Quantum in the Cloud
The University of Bristol will make available access to a four qubit photonic quantum computer. You can start by using their web interface available here to create a configuration, simulate your configuration and then run the configuration on their four qubit photonic chip. The simulator is available to everyone, but in order to get access to the actual hardware you will need to request an Access Token. Once it is granted, you can then run your configuration on their hardware. Additional documentation on this tool is available here and here.