Quil (instruction set architecture)
Quil is a quantum instruction set architecture that first introduced a shared quantum/classical memory model. It was introduced by Robert Smith, Michael Curtis, and William Zeng in A Practical Quantum Instruction Set Architecture. Many quantum algorithms require a memory architecture. Quil is being developed for the superconducting quantum processors developed by Rigetti Computing through the Forest quantum programming API. A Python library called
pyQuil was introduced to develop Quil programs with higher level constructs. A Quil backend is also supported by other quantum programming environments.Underlying quantum abstract machine
In the paper presented by Smith, Curtis and Zeng, Quil specifies the instruction set for a Quantum Abstract Machine akin to a Turing machine, yet more practical for accomplishing "real-world" tasks. The state of the QAM can be represented as a 6-tuple where:- is the state of a fixed but arbitrary number of qubits indexed using a 0-based indexing.
- is a classical memory of a number of classical bits indexed using a 0-based indexing.
- a fixed but arbitrary list of static gates
- a fixed but arbitrary list of parametric gates
- a sequence of Quil instructions to be executed, representing the program. The length of is denoted by.
- an integer program counter pointing to the next instruction to be executed. always starts at 0 and ends at indicating program halting The program counter is incremented after every instruction, except for special control flow instructions (conditional and unconditional jumps, and the special
HALTinstruction that halts the program by setting to.
Features
Quil has support for defining possibly parametrized gates in matrix form and their application on qubits. The language also supports macro-like definitions of possibly parametrized quantum circuits and their expansion, qubit measurement and recording of the outcome in classical memory, synchronization with classical computers with theWAIT instruction which pauses the execution of a Quil program until a classical program has ended its execution, conditional and unconditional branching, pragma support, as well as inclusion of files for use as librariesRigetti QVM
Rigetti Computing developed a quantum virtual machine in Common Lisp that simulates the defined Quantum Abstract Machine on a classical computer and is capable of the parsing and execution of Quil programs with possibly remote execution via HTTP.Example
The following example demonstrates the classical control flow needed to do quantum teleportation of the qubit in register 2 to register 1:- Declare classical memory
H 0
CNOT 0 1
- Teleport
H 2
MEASURE 2 ro
MEASURE 0 ro
- Classically communicate measurements
X 1
LABEL @SKIP
JUMP-UNLESS @END ro
Z 1
LABEL @END
Examples of the implementations of the quantum Fourier transform and the variational quantum Eigensolver are given in the paper.