0% found this document useful (0 votes)
6 views

Lecture 1

Quantum Computer Programming

Uploaded by

hasinow
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Lecture 1

Quantum Computer Programming

Uploaded by

hasinow
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 91

CS269: Quantum Computer

Programming

Dan Boneh & Will Zeng + Guests


http://www.smbc-comics.com/comic/the-talk-3
This course is:
At the leading edge of a new technology, discipline, and industry

A programming-first approach

A great way to challenge yourself to think about computation in a totally new way

A way to learn “just enough” quantum physics

An experiment!
Course details
Online at: http://cs269q.stanford.edu

Two lectures per week. Tuesday, Thursday 10:30-11:50, McCullough 115

There will be one written problem sets, three programming projects, and
one final programming project.

Textbook: Quantum Computation and Quantum Information: 10th


Anniversary Edition by Michael A. Nielsen and Isaac L. Chuang

Readings: posted online with the syllabus for each lecture. These are
critical.
Course Topics & Timeline

Final Programming Project


Programming Proj. 3
Programming Proj. 2
Programming Proj. 1
Problem Set 1

Introduction Low Level Noise & Hybrid Hardware & Hybrid Error Correction Other
Linear Algebra Programming Benchmarking Algorithms Compilation Algs & Error Corrected Topics
Quantum Quantum Ops VQE Simulation MBQC
(QML) Algorithms
Mechanics Instruction Sets QAOA Blind QC
Shor’s Factoring Algorithm
Classical Ctrl Optimization Grover’s Search Algorithm

Lecture 1 Lecture 20
Quantum Computing isn’t the answer to everything.

But it will almost certainly free us to solve more problems.


Today’s lecture:

Q1. Why program a quantum computer?

Q2. How do I program a quantum computer?


Classical computers have fundamental limits

Transistor scaling

Economic limits with 10bn for


next node fab

Ultimate single-atom limits

Source: https://www.anandtech.com/show/12693/intel-delays-mass-production-of-10-nm-cpus-to-2019
Classical computers have fundamental limits

Transistor scaling Returns to Energy consumption


parallelization
Economic limits with 10bn for Amdahl’s law Exascale computing project has
next node fab its own power plant

Ultimate single-atom limits Power density can melt chips


But Requirements for Compute Continue to Grow

Source: https://blog.openai.com/ai-and-compute/
And there’s more we want to do

Simulation Driven Organic Batteries & Artificial General


Drug Design Solar Cells Intelligence
Why build a quantum computer?
New power | New opportunity | Fundamental curiosity

Quantum computing power* scales exponentially with qubits


N bits can exactly simulate log N qubits

This compute unit....

Commodore 64 AWS M4 Instance Entire Global Cloud

1 Million x Commodore 64 1 Billion x


(1 Million x Commodore 64)

can exactly simulate: 10 Qubits 30 Qubits 60 Qubits

Size of today’s systems.


Note these are imperfect qubits.
* We will be more precise later in the lecture
Why build a quantum computer?
New power | New opportunity | Fundamental curiosity

For N qubits every time step (~100ns*) is an exponentially large 2N x 2N complex matrix multiplication

Crucial details:
- limited number of multiplications (hundreds to thousands) due to noise
- not arbitrary matrices (need to be easily constructed on a QC)
- small I/O, N-bits in and N-bits out

The “big-memory small pipe” mental model for quantum computing

poly(N) bits N bits


2N x 2 N

N qubits

* for superconducting qubit systems


Why build a quantum computer?
New power | New opportunity | Fundamental curiosity

Machine Learning Supply Chain Robotic Manufacturing Computational Alternative Energy


Optimization Materials Science Research
> Development of new > Reduce
training sets and > Forecast and manufacturing time > Design of better > Efficiently convert
algorithms optimize for future and cost catalysts for batteries atmospheric CO2 to
inventory demand methanol
> Classification and > Maps to a Traveling > Quantum algorithms
sampling of large data > NP-hard scheduling Salesman Problem for calculating > Powered by existing
sets and logistics map into addressable by electronic structure hybrid
quantum applications quantum constrained quantum-classical
optimization algorithms + machine
learning

What isn’t on here: breaking RSA with Shor’s algorithm


Quantum hardware development is accelerating
Plotted by number of qubits in development

OpenQuantum
Making quantum technologies useful sooner and for
more people

Image: Strangeworks
Quantum Hardware comes
in many forms
Photonic Quantum Computers Use Light

Image: Xanadu
Superconducting Qubits are Supercooled RF Circuits

Image: IBM
Images: Rigetti
Ion Trap Quantum Computers

Image: IonQ
Why build a quantum computer?
New power | New opportunity | Fundamental curiosity

Investments across academia, government, and industry are global and growing

Plus approximately $400M in global VC investment


Large Companies are involved
In a growing
ecosystem of
startups and
incumbents
Why program a quantum computer?
New power | New opportunity | Fundamental curiosity
Why program a quantum computer?
New power | New opportunity | Fundamental curiosity
Why program a quantum computer?
New power | New opportunity | Fundamental curiosity

Quantum computing reorients the relationship between physics and computer science.

Every “function which would naturally be regarded as computable” can be


computed by the universal Turing machine. - Turing

“... nature isn't classical, dammit...” - Feynman


Why program a quantum computer?
New power | New opportunity | Fundamental curiosity

Quantum computing reorients the relationship between physics and computer science.

Every “function which would naturally be regarded as computable” can be


computed by the universal Turing machine. - Turing

“... nature isn't classical, dammit...” - Feynman

Physical phenomenon apply to information and computation as well.

> Superposition > No-cloning > Teleportation


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quantum computers have


quantum processor(s) and
classical processors

Quantum processor Full quantum computing system

Otterbach et al. arXiv:1712.05771 Images: Rigetti


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quantum computers have


Classical control racks
quantum processor(s) and
classical processors

Chip goes
here

Quantum processor Full quantum computing system

Otterbach et al. arXiv:1712.05771 Images: Rigetti


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Practical, valuable quantum computing is Hybrid Quantum/Classical Computing

CPU QPU
bits: qubits:
[0]...[N] 0...M

Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Practical, valuable quantum computing is Hybrid Quantum/Classical Computing

CPU QPU
bits: qubits:
[0]...[N] 0...M

Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Practical, valuable quantum computing is Hybrid Quantum/Classical Computing

CPU QPU
bits: qubits:
[0]...[N] 0...M

The instruction set is optimized for this.

Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quantum programming is preparing and sampling from complicated distributions

1. Send program
e.g.
X0
2. Prep
CNOT 0 1
Distribution
CPU QPU
bits: qubits:
qubits:
[0]...[N] 0...M
0...M
3. Sample
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector

Probability of 0 Probability of 1
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

|⍺|2 = Probability of 0 |𝛽|2 = Probability of 1


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

...
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector)

Probability of bitstring x
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

|⍺x|2 = Probability of bitstring x


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices Unitary Matrices


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices Unitary Matrices

Component Ops Boolean Gates Tensor products of matrices Tensor products of matrices
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices Unitary Matrices

Component Ops Boolean Gates Tensor products of matrices Tensor products of matrices

Sampling
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices Unitary Matrices

Component Ops Boolean Gates Tensor products of matrices Tensor products of matrices

Sampling Born rule


2
|⍺x| = Probability of bitstring x
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Bits Probabilistic Bits Qubits

State (single unit) Bit Real vector Complex vector

State (multi-unit) Bitstring Prob. Distribution (stochastic vector) Wavefunction (complex vector)

Operations Boolean Logic Stochastic Matrices Unitary Matrices

Component Ops Boolean Gates Tensor products of matrices Tensor products of matrices

Sampling Born rule


Measurement
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>
Start in 0
𝛹 = [1, 0, 0, 0]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
Apply X instr to 0th qubit
𝛹 = [0, 1, 0, 0]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
𝛹 = [0, 1, 0, 0]
00 01 10 11
X 0
H 0 # Hadamard gate
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
𝛹 = [0, 1, 0, 0]
00 01 10 11
X 0
H 0 # Hadamard gate
Apply H instr to 0th qubit
𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
𝛹 = [0, 1, 0, 0]
00 01 10 11
X 0
H 0 # Hadamard gate
𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11

CNOT 0 1
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
𝛹 = [0, 1, 0, 0]
00 01 10 11
X 0
H 0 # Hadamard gate
𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11

CNOT 0 1
Apply CNOT instr to 0 and 1 qubits
𝛹 = [1/√2, 0, 0, 1/√2]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

𝛹 = [1, 0, 0, 0]
00 01 10 11
X 0 # “quantum NOT”
𝛹 = [0, 1, 0, 0]
00 01 10 11
X 0
H 0 # Hadamard gate
𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11

CNOT 0 1
𝛹 = [1/√2, 0, 0, 1/√2]
00 01 10 11

Qubits 0 and 1 are ENTANGLED


How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

X 0 # “quantum NOT”
X 0
H 0 # Hadamard gate
CNOT 0 1
𝛹 = [1/√2, 0, 0, 1/√2]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

X 0 # “quantum NOT”
X 0
H 0 # Hadamard gate
CNOT 0 1
𝛹 = [1/√2, 0, 0, 1/√2]
00 01 10 11
# Move quantum data to classical data
# MEASURE <qubit register> [<bit register>]

MEASURE 0 [2]
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quil (Quantum Instruction Language) gives each quantum operation an instruction


<instruction> <qubit targets>

X 0 # “quantum NOT”
X 0
H 0 # Hadamard gate
CNOT 0 1
𝛹 = [1/√2, 0, 0, 1/√2]
00 01 10 11
# Move quantum data to classical data
# MEASURE <qubit register> [<bit register>] 50-50 branch

MEASURE 0 [2]

𝛹 = [1, 0, 0, 0] 𝛹 = [0, 0, 0, 1]
00 01 10 11 00 01 10 11
Classical Bit
Register
0 0 0 0 ... 0 0 1 0 ...
[0] [1] [2] [3] [0] [1] [2] [3]
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Some more examples of MEASUREMENT Quantum Memory Classical Memory

25%

𝛹 = [1/2, 0, 0, √3/4] MEASURE 1 [3]


00 01 10 11
75%
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Some more examples of MEASUREMENT Quantum Memory Classical Memory

25% 𝛹 = [1, 0, 0, 0] 0 0 0 0 ...


00 01 10 11
𝛹 = [1/2, 0, 0, √3/4] MEASURE 1 [3] [0] [1] [2] [3]
00 01 10 11
75%
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Some more examples of MEASUREMENT Quantum Memory Classical Memory

25% 𝛹 = [1, 0, 0, 0] 0 0 0 0 ...


00 01 10 11
𝛹 = [1/2, 0, 0, √3/4] MEASURE 1 [3] [0] [1] [2] [3]
00 01 10 11
75% 𝛹 = [0, 0, 0, 1] 0 0 0 1 ...
00 01 10 11
[0] [1] [2] [3]
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Some more examples of MEASUREMENT Quantum Memory Classical Memory

25% 𝛹 = [1, 0, 0, 0] 0 0 0 0 ...


00 01 10 11
𝛹 = [1/2, 0, 0, √3/4] MEASURE 1 [3] [0] [1] [2] [3]
00 01 10 11
75% 𝛹 = [0, 0, 0, 1] 0 0 0 1 ...
00 01 10 11
[0] [1] [2] [3]

100% MEASURE 1 [3]


𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Some more examples of MEASUREMENT Quantum Memory Classical Memory

25% 𝛹 = [1, 0, 0, 0] 0 0 0 0 ...


00 01 10 11
𝛹 = [1/2, 0, 0, √3/4] MEASURE 1 [3] [0] [1] [2] [3]
00 01 10 11
75% 𝛹 = [0, 0, 0, 1] 0 0 0 1 ...
00 01 10 11
[0] [1] [2] [3]

100% MEASURE 1 [3]


𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11
𝛹 = [1/√2, 1/√2, 0, 0]
00 01 10 11
0 0 0 0 ...
[0] [1] [2] [3]
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quantum programming is preparing and sampling from complicated distributions

1. Send program
e.g.
X0
2. Prep
CNOT 0 1
Distribution
CPU QPU
bits: qubits:
qubits:
[0]...[N] 0...M
0...M
3. Sample
The Quil Programming Model
Targets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions

Ψ: Quantum state (qubits) → quantum instructions


# Quil Example
C: Classical state (bits) → classical and measurement instructions H 3
κ: Execution state (program)→ control instructions (e.g., jumps) MEASURE 3 [4]
JUMP-WHEN @END [5]
.
.
.
The Quil Programming Model
Targets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions

Ψ: Quantum state (qubits) → quantum instructions


# Quil Example
C: Classical state (bits) → classical and measurement instructions H 3
κ: Execution state (program)→ control instructions (e.g., jumps) MEASURE 3 [4]
JUMP-WHEN @END [5]
0. Initialize into zero states .
.
QAM: Ψ0, C0, κ0
.

1. Hadamard on
qubit 3

Ψ1, C0, κ1
The Quil Programming Model
Targets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions

Ψ: Quantum state (qubits) → quantum instructions


# Quil Example
C: Classical state (bits) → classical and measurement instructions H 3
κ: Execution state (program)→ control instructions (e.g., jumps) MEASURE 3 [4]
JUMP-WHEN @END [5]
0. Initialize into zero states .
.
QAM: Ψ0, C0, κ0
.

1. Hadamard on Outcome 0
qubit 3

Ψ2, C0, κ2

Ψ1, C0, κ1

Outcome 1

2. Measure qubit 3 Ψ3, C1, κ2


into bit #4
The Quil Programming Model
Targets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions

Ψ: Quantum state (qubits) → quantum instructions


# Quil Example
C: Classical state (bits) → classical and measurement instructions H 3
κ: Execution state (program)→ control instructions (e.g., jumps) MEASURE 3 [4]
JUMP-WHEN @END [5]
0. Initialize into zero states .
.
QAM: Ψ0, C0, κ0
.

1. Hadamard on Outcome 0 3. Jump to end of program


qubit 3 if bit #5 is TRUE
Ψ2, C0, κ2

Ψ1, C0, κ1 Ψ2, C0, κ3

Outcome 1
...
...
2. Measure qubit 3 Ψ3, C1, κ2
into bit #4
...
Pennylane
Main tools in this
course. All OSS
Apache v2 Pennylane
Control Pulse
PyQuil Computer program

QPU

0 1 0 1 0 1 1 0 0 0 1...

1
Readout
Qubit
operations
Image: Rigetti
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

We need hybrid programming because of errors

Chance of hardware error in a classical computer:

0.000,000,000,000,000,000,000,1 %

Chance of hardware error in a quantum computer:

0.1%
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

Quantum programming is preparing and sampling from complicated distributions

1. Send program
e.g.
X0
2. Prep
CNOT 0 1
Distribution
CPU QPU
bits: qubits:
qubits:
[0]...[N] 0...M
0...M
3. Sample
How do I program a quantum computer?
Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms

By parameterizing quantum programs we can train them to be robust to noise

1. Send program
e.g.
RX(𝛳) 2
2. Prep
4. Optimize
Distribution
choice of 𝛳
against some
CPU QPU
objective bits: qubits:
qubits:
[0]...[N] 0...M
0...M
3. Sample
Quantum Machine Learning
> Quantum neuron: an elementary building block for machine learning on A generative modeling approach for benchmarking and
quantum computers. (Cao et al. 2017) training shallow quantum circuits. (Benedetti et al. 2018)

> Quantum circuit learning. (Mitarai et al. 2018)

> Quantum machine learning in feature Hilbert spaces.


(Schuld and Killoran 2018)
The Variational Quantum Eigensolver
Used for the electronic structure problem in quantum chemistry

1. MOLECULAR DESCRIPTION 2. MAP TO QUBIT REPRESENTATION 3. PARAMETERIZED ANSATZ

e.g. Electronic Structure Hamiltonian e.g. Bravyi-Kitaev or Jordan-Wigner e.g. Unitary Coupled Cluster
Transform Variational Adiabatic Ansatz
e.g. DI-HYDROGEN

4. RUN Q.V.E. QUANTUM-CLASSICAL HYBRID ALGORITHM

QUANTUM PROCESSOR CLASSICAL PROCESSOR

MEASURE TERM 1
CLASSICAL
PREPARE
MEASURE TERM 2 SUM OPTIMIZATION OF
QUANTUM
TERMS ANSATZ
STATE (𝞗)

PARAMETER:
MEASURE TERM N 𝞗

O'Malley, P. J. J., et al. (2015). Scalable Quantum Simulation of Molecular Energies. arXiv:1512.06860. McClean, J. R. et al. (2015). The theory of variational hybrid quantum-classical algorithms. arXiv:1509.04279.
Wecker, D., et al. (2015). Progress towards practical quantum variational algorithms. Physical Review A, 92(4), 042303. Peruzzo, A., et al. (2014). A variational eigenvalue solver on a photonic quantum processor. Nature communications, 5.
VQE Simulations on Quantum Hardware

Peruzzo et al. 1304.3061 O’Malley et al. 1512.06860

Kandala et al.
1704.05018
Quantum Approximate Optimization Algorithm
[QAOA] Hybrid algorithm used for constraint satisfaction problems

Given binary constraints: MAXIMIZE

Traveling Salesperson Scheduling K-means clustering Boltzmann Machine Training

Hadfield et al. 2017 [1709.03489] Otterbach et al. 2017 [1712.05771] Verdon et al. 2017 [1712.05304]
QAOA in Forest
In 19 lines of code

from pyquil import Program


from pyquil.api import WavefunctionSimulator
from pyquil.gates import H
from pyquil.paulis import sZ, sX, sI, exponentiate_commuting_pauli_sum

graph = [(0, 1), (1, 2), (2, 3), (3, 0)]


nodes = range(4)

init_state_prog = sum([H(i) for i in nodes], Program())


h_cost = -0.5 * sum(sI(nodes[0]) - sZ(i) * sZ(j) for i, j in graph)
h_driver = -1. * sum(sX(i) for i in nodes)

def qaoa_ansatz(betas, gammas):


return sum([exponentiate_commuting_pauli_sum(h_cost)(g) + \
exponentiate_commuting_pauli_sum(h_driver)(b) \
for g, b in zip(gammas, betas)], Program())

def qaoa_cost(params):
half = int(len(params)/2)
betas, gammas = params[:half], params[half:]
program = init_state_prog + qaoa_ansatz(betas, gammas)
return WavefunctionSimulator().expectation(prep_prog=program, pauli_terms=h_cost)

minimize(qaoa_cost, x0=[0., 0.5, 0.75, 1.], method='Nelder-Mead', options={'disp': True})


Open areas in quantum programming

> Debuggers Forest


> Optimizing compilers

> Application specific packages


forestopenfermion XaCC
> Adoption and implementations

OpenFermion
Q1. Why program a quantum computer?
New power | New opportunity | Fundamental curiosity

Q2. How do I program a quantum computer?


Hybrid quantum programming (usually) in Python!
Course Topics & Timeline

Final Programming Project


Programming Proj. 3
Programming Proj. 2
Programming Proj. 1
Problem Set 1

Introduction Low Level Noise & Hybrid Hardware & Hybrid Error Correction Other
Linear Algebra Programming Benchmarking Algorithms Compilation Algs & Error Corrected Topics
Quantum Quantum Ops VQE Simulation MBQC
(QML) Algorithms
Mechanics Instruction Sets QAOA Blind QC
Shor’s Factoring Algorithm
Classical Ctrl Optimization Grover’s Search Algorithm

Lecture 1 Lecture 20
Actions for between now and the next
lecture:
1. Read the syllabus.

2. Read Mike & Ike Chapters 1 & 2. Especially review Sections 2.2, 2.3 & 2.6.

3. Review Linear Algebra. You will need:


Vectors and linear maps Hermitian Operators
Bases and linear independence Unitary Matrices
Pauli Matrices Tensor Products
Inner Products Matrix Exponentials
Eigenvalues & Eigenvectors Traces
Adjoints Commutators and Anti-commutators

4. Download and install pyQuil: https://pyquil.readthedocs.io

You might also like