Scaffold: Quantum Programming Language

Abstract : For quantum computing to become potentially viable however, research must also make inroads regarding the implementation, compilation, and architectural issues that lie between high-level mathematical algorithm expressions and low-level physical implementations. In particular, we need tools and analysis techniques that can--for a given algorithm and potential physical implementation technology--answer questions like: how much would it cost (i.e., how much resource in terms of qubits, gates, time are required?) to implement the algorithm in this technology? What is its performance potential? Is it scalable? Are there more algorithms that offer such speedups over classical computers? Our work is building a language and toolflow to answer such questions. This document describes the Scaffold programming language, its design goals, and related tools. Scaffold is a programming language for expressing quantum algorithms. A quantum algorithm can consist of a wide variety of components (including classical and quantum routines) which will be defined using different coding techniques. As a quantum programming language (QPL), Scaffold was formulated to make it easy to express an algorithm with so many disparate components in a clean and efficient manner. It is from this notion of putting things together that Scaffold derives its name.

[1]  Mikhail N. Vyalyi,et al.  Classical and Quantum Computation , 2002, Graduate studies in mathematics.

[2]  A. Brown,et al.  The Architecture of Open Source Applications , 2011 .

[3]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java , 1997 .

[4]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[5]  Massoud Pedram,et al.  Analysis and Synthesis of Quantum Circuits by Using Quantum Decision Diagrams , 2006, Proceedings of the Design Automation & Test in Europe Conference.

[6]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[7]  Rodney Van Meter,et al.  Faster quantum chemistry simulation on fault-tolerant quantum computers , 2012, 1204.0567.

[8]  Bernhard Ömer,et al.  Quantum Programming in QCL , 2000 .

[9]  Alán Aspuru-Guzik,et al.  Faster quantum chemistry simulation on fault-tolerant quantum computers , 2012 .

[10]  I. Chuang,et al.  Quantum Computation and Quantum Information: Bibliography , 2010 .

[11]  Andrew W. Appel,et al.  Modern Compiler Implementation in ML , 1997 .

[12]  Michael A. Nielsen,et al.  The Solovay-Kitaev algorithm , 2006, Quantum Inf. Comput..

[13]  References , 1971 .

[14]  Austin G. Fowler Constructing arbitrary Steane code single logical qubit fault-tolerant gates , 2011, Quantum Inf. Comput..

[15]  Neil Trevett Khronos SOC programming tutorial , 2012, 2012 IEEE Hot Chips 24 Symposium (HCS).

[16]  Niraj K. Jha,et al.  RMDDS , 2014, ACM J. Emerg. Technol. Comput. Syst..

[17]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[18]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[19]  A presentation of the quantum Fourier transform from a recursive viewpoint , 2004, quant-ph/0411069.

[20]  Frederic T. Chong,et al.  Quantum Computing for Computer Architects, Second Edition , 2011, Quantum Computing for Computer Architects.

[21]  Steven T. Flammia,et al.  Q-circuit Tutorial , 2004 .

[22]  Massoud Pedram,et al.  Minimizing the latency of quantum circuits during mapping to the ion-trap circuit fabric , 2012, 2012 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[23]  Margaret Martonosi,et al.  Tailoring quantum architectures to implementation style: a quantum computer for mobile and persistent qubits , 2007, ISCA '07.