A Software Methodology for Compiling Quantum Programs

  title={A Software Methodology for Compiling Quantum Programs},
  author={Thomas H{\"a}ner and Damian S. Steiger and Krysta Marie Svore and Matthias Troyer},
Quantum computers promise to transform our notions of computation by offering a completely new paradigm. To achieve scalable quantum computation, optimizing compilers and a corresponding software design flow will be essential. We present a software architecture for compiling quantum programs from a high-level language program to hardware-specific instructions. We describe the necessary layers of abstraction and their differences and similarities to classical layers of a computer-aided design… 
Programming languages and compiler design for realistic quantum hardware
The challenge is to find abstractions that expose key details while hiding enough complexity in quantum toolflows to bridge the gap between hardware size and reliability requirements of quantum computing algorithms and physical machines foreseen within the next ten years.
Overview and Comparison of Gate Level Quantum Software Platforms
A current picture of the rapidly evolving quantum computing landscape is provided by comparing four software platforms - Forest, Qiskit, ProjectQ, and the Quantum Developer Kit (Q#) - that enable researchers to use real and simulated quantum devices.
Resource-Efficient Quantum Computing by Breaking Abstractions
This review points out that greater efficiency of QC systems can be achieved by breaking the abstractions between these layers, including two hardware-aware compilation optimizations that break the quantum instruction set architecture (ISA) abstraction and two error-correction/information-processing schemes that breakThe qubit abstraction.
Quantum Circuit Compilation : An Emerging Application for Automated Reasoning
A software framework to enable an automated reasoning approach to Quantum Circuit Compilation for NISQ architectures (QCC-NISQ), and the current implementation of it as part of software suite for automated, architecture-aware, compilation for emerging quantum computers.
Quantum Compiling
This paper reviews the quantum compiling stack of both gate model quantum computers and the adiabatic quantum computers, respectively, and discusses commercial initiatives and quantum compiling products, including explicit programming examples.
Boolean satisfiability in quantum compilation
The flow of quantum compilation is described and algorithms based on Boolean satisfiability are proposed, which are a good match to tackle such computationally complex problems.
Optimized Compilation of Aggregated Instructions for Realistic Quantum Computers
A universal quantum compilation methodology that aggregates multiple logical operations into larger units that manipulate up to 10 qubits at a time and optimizes these aggregates by finding commutative intermediate operations that result in more efficient schedules and creating custom control pulses optimized for the aggregate.
ProjectQ: An Open Source Software Framework for Quantum Computing
We introduce ProjectQ, an open source software effort for quantum computing. The first release features a compiler framework capable of targeting various types of hardware, a high-performance
The engineering challenges in quantum computing
The basic concepts of quantum computing are introduced and what the required layers are for building a quantum system are described, as well as discussing some compiler and programming issues relative to quantum algorithms.
Fast simulation of quantum algorithms using circuit optimization
The advantage of co-developing and integrating simulators and compilers is demonstrated by proposing a specialized compiler pass to reduce the simulation time for arbitrary circuits.


ScaffCC: a framework for compilation and analysis of quantum computing programs
This work presents a scalable compiler for large-scale quantum applications, and highlights the importance of high-level quantum compilation for logical circuit translation, quantitative analysis of algorithms, and optimization of circuit lengths.
LIQUi|>: A Software Design Architecture and Domain-Specific Language for Quantum Computing
Languages, compilers, and computer-aided design tools will be essential for scalable quantum computing, which promises an exponential leap in our ability to execute complex tasks. LIQUi|> is a
Layered architecture for quantum computing
A layered quantum computer architecture is developed, which is a systematic framework for tackling the individual challenges of developing a quantum computer while constructing a cohesive device design and finding that the quantum dot architecture could solve such problems on the timescale of days.
Quipper: a scalable quantum programming language
Quipper, a scalable, expressive, functional, higher-order quantum programming language, which is geared towards a model of computation that uses a classical computer to control a quantum device, but is not dependent on any particular model of quantum hardware.
Quantum Circuit Simplification and Level Compaction
This paper considers a local optimization technique based on templates to simplify and reduce the depth of nonoptimal quantum circuits and shows how templates can be used to compact the number of levels of a quantum circuit.
A layered software architecture for quantum computing design tools
A proposed four-phase design flow assists with computations by transforming a quantum algorithm from a high-level language program into precisely scheduled physical actions.
Quantum programming languages: survey and bibliography
  • S. Gay
  • Computer Science
    Mathematical Structures in Computer Science
  • 2006
The study of quantum Programming languages is justified, the basics of quantum computing are presented, the literature in quantum programming languages is surveyed, and directions for future research are indicated.
Reversible circuit compilation with space constraints
REVS is introduced, a compiler for reversible circuits that can translate a subset of the functional programming language F# into Toffoli networks which can then be further interpreted for instance in LIQui|>, a domain-specific language for quantum computing and which is also embedded into F#.
A Procedural Formalism for Quantum Computing
QCL (Quantum Computation Language) is a hight level, architecture independent programming language for quantum computers, with a syntax derived from classical procedural languages like C or Pascal, which allows for the complete implementation and simulation of quantum algorithms in one consistent formalism.
Gate count estimates for performing quantum chemistry on small quantum computers
This paper focuses on the quantum resources required to find the ground state of a molecule twice as large as what current classical computers can solve exactly and suggests that for quantum computation to become useful for quantum chemistry problems, drastic algorithmic improvements will be needed.