April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... ·...
Transcript of April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... ·...
![Page 1: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/1.jpg)
A Platform for Quantum Programming
Will ZengRigetti Computing
Stanford Platform Lab Seminar16.30-17.30 in Gates 415
April 3, 2018
![Page 2: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/2.jpg)
Q1. Why program a quantum computer?
Q2. How do I program a quantum computer?
![Page 3: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/3.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
![Page 4: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/4.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Quantum computing power* scales exponentially with qubitsN bits can exactly simulate log N qubits
* We will be more precise later in the talk
10 Qubits
Commodore 64
60 Qubits
Entire Global Cloud
30 Qubits
AWS M4 Instance
1 Million x Commodore 64 1 Billion x (1 Million x Commodore 64)
This compute unit....
can exactly simulate:
![Page 5: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/5.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Quantum computing power* scales exponentially with qubitsN bits can exactly simulate log N qubits
* We will be more precise later in the talk
10 Qubits
Commodore 64
60 Qubits
Entire Global Cloud
30 Qubits
AWS M4 Instance
1 Million x Commodore 64 1 Billion x (1 Million x Commodore 64)
This compute unit....
can exactly simulate:
Rigetti 19 qubitsavailable since Dec 2017
![Page 6: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/6.jpg)
Robotic Manufacturing
> Reduce manufacturing time and cost
> Maps to a Traveling Salesman Problem
addressable by quantum constrained optimization
Supply Chain Optimization
> Forecast and optimize for future inventory demand
> NP-hard scheduling and logistics map into quantum
applications
Computational Materials Science
> Design of better catalysts for batteries
> Quantum algorithms for calculating electronic
structure
Alternative Energy Research
> Efficiently convert atmospheric CO2 to methanol
> Powered by existing hybrid quantum-classical algorithms +
machine learning
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
![Page 7: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/7.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Quantum processors are scaling up quickly
![Page 8: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/8.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Investments across academia, government, and industry are global and growing
![Page 9: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/9.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
![Page 10: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/10.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
![Page 11: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/11.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Every “function which would naturally be regarded as computable” can be computed by the universal Turing machine. - Turing
“... nature isn't classical, dammit...” - Feynman
Quantum computing reorients the relationship between physics and computer science.
![Page 12: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/12.jpg)
Why program a quantum computer? New power | New opportunity | Fundamental curiosity
Every “function which would naturally be regarded as computable” can be computed by the universal Turing machine. - Turing
> Superposition > No-cloning > Teleportation
“... nature isn't classical, dammit...” - Feynman
Quantum computing reorients the relationship between physics and computer science.
Physical phenomenon apply to information and computation as well.
![Page 13: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/13.jpg)
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 14: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/14.jpg)
Quantum computers have quantum processor(s) and
classical processors
Quantum processor Full quantum computing system
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
Otterbach et al. arXiv:1712.05771
![Page 15: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/15.jpg)
Quantum computers have quantum processor(s) and
classical processors
Quantum processor Full quantum computing system
Chip goes here
Classical control racks
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
Otterbach et al. arXiv:1712.05771
![Page 16: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/16.jpg)
QPUCPUbits:
[0]...[N]qubits:0...M
Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355
Practical, valuable quantum computing is Hybrid Quantum/Classical Computing
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 17: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/17.jpg)
QPUCPU
Forest is optimized for this.
bits:[0]...[N]
qubits:0...M
Practical, valuable quantum computing is Hybrid Quantum/Classical Computing
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355
![Page 18: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/18.jpg)
QPUCPU
Forest is optimized for this with our instruction set.
bits:[0]...[N]
qubits:0...M
Practical, valuable quantum computing is Hybrid Quantum/Classical Computing
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
Smith, Curtis, Zeng. “A Practical Quantum Instruction Set Architecture” arXiv:1608.03355
![Page 19: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/19.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 20: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/20.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
Probability of 0 Probability of 1
![Page 21: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/21.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 22: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/22.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector Complex vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 23: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/23.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector Complex vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
|⍺|2 = Probability of 0 | |2 = Probability of 1
![Page 24: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/24.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector Complex vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 25: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/25.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector Complex vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
![Page 26: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/26.jpg)
QubitsBits Probabilistic Bits
State (single unit) Bit Real vector Complex vector
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
|⍺|2 = Probability of 0 | |2 = Probability of 1
![Page 27: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/27.jpg)
QubitsBits Probabilistic Bits
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
![Page 28: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/28.jpg)
QubitsBits Probabilistic Bits
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
|⍺x|2 = Probability of bitstring x
![Page 29: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/29.jpg)
QubitsBits Probabilistic Bits
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
![Page 30: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/30.jpg)
QubitsBits Probabilistic Bits
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
![Page 31: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/31.jpg)
QubitsBits Probabilistic Bits
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
Sampling
![Page 32: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/32.jpg)
QubitsBits Probabilistic Bits
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
Sampling Born rule|⍺x|
2 = Probability of bitstring x
![Page 33: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/33.jpg)
QubitsBits Probabilistic Bits
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
Sampling Born ruleMeasurement
![Page 34: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/34.jpg)
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
Start in 0
![Page 35: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/35.jpg)
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
Apply X instr to 0th qubit
![Page 36: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/36.jpg)
X 0 # “quantum NOT”
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
![Page 37: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/37.jpg)
X 0 # “quantum NOT”
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
Apply H instr to 0th qubit = [1/√2, 1/√2, 0, 0]
00 01 10 11
![Page 38: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/38.jpg)
X 0 # “quantum NOT”
X 0 H 0 # Hadamard gate
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
= [1/√2, 1/√2, 0, 0]00 01 10 11
![Page 39: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/39.jpg)
X 0 # “quantum NOT”
X 0 H 0 # Hadamard gate
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
= [1/√2, 1/√2, 0, 0]00 01 10 11
= [1/√2, 0, 0, 1/√2]00 01 10 11
Apply CNOT instr to 0 and 1 qubits
![Page 40: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/40.jpg)
X 0 # “quantum NOT”
X 0 H 0 # Hadamard gate
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]
= [0, 1, 0, 0]
00 01 10 11
00 01 10 11
= [1/√2, 1/√2, 0, 0]00 01 10 11
= [1/√2, 0, 0, 1/√2]00 01 10 11
Qubits 0 and 1 are ENTANGLED
![Page 41: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/41.jpg)
X 0 # “quantum NOT”X 0 H 0 # Hadamard gateCNOT 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/√2, 0, 0, 1/√2]00 01 10 11
![Page 42: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/42.jpg)
X 0 # “quantum NOT”X 0 H 0 # Hadamard gateCNOT 0 1
# 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>
= [1/√2, 0, 0, 1/√2]00 01 10 11
![Page 43: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/43.jpg)
X 0 # “quantum NOT”X 0 H 0 # Hadamard gateCNOT 0 1
# 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>
= [1/√2, 0, 0, 1/√2]00 11
0 0 0 0 ...Classical Bit Register 0 0 1 0 ...
= [1, 0, 0, 0]00 01 10 11
= [0, 0, 0, 1]00 01 10 11
01 10
50-50 branch
[0] [1] [2] [3] [0] [1] [2] [3]
![Page 44: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/44.jpg)
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
bits:[0]...[N]
qubits:0...M
QPUCPU
1. Send programe.g.X 0CNOT 0 1
3. Sample
qubits:0...M
2. Prep Distribution
![Page 45: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/45.jpg)
The Quil Programming ModelTargets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions
Ψ: Quantum state (qubits) → quantum instructions
C: Classical state (bits) → classical and measurement instructions
κ: Execution state (program)→ control instructions (e.g., jumps)
# Quil Example
H 3
MEASURE 3 [4]
JUMP-WHEN @END [5]
.
.
.
![Page 46: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/46.jpg)
The Quil Programming ModelTargets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions
Ψ: Quantum state (qubits) → quantum instructions
C: Classical state (bits) → classical and measurement instructions
κ: Execution state (program)→ control instructions (e.g., jumps)
# Quil Example
H 3
MEASURE 3 [4]
JUMP-WHEN @END [5]
.
.
.QAM: Ψ0, C0, κ0
Ψ1, C0, κ1
1. Hadamard on qubit 3
0. Initialize into zero states
![Page 47: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/47.jpg)
The Quil Programming ModelTargets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions
Ψ: Quantum state (qubits) → quantum instructions
C: Classical state (bits) → classical and measurement instructions
κ: Execution state (program)→ control instructions (e.g., jumps)
# Quil Example
H 3
MEASURE 3 [4]
JUMP-WHEN @END [5]
.
.
.QAM: Ψ0, C0, κ0
Ψ1, C0, κ1
1. Hadamard on qubit 3
0. Initialize into zero states
Ψ2, C0, κ2
Ψ3, C1, κ22. Measure qubit 3 into bit #4
Outcome 0
Outcome 1
![Page 48: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/48.jpg)
The Quil Programming ModelTargets a Quantum Abstract Machine (QAM) with a syntax for representing state transitions
Ψ: Quantum state (qubits) → quantum instructions
C: Classical state (bits) → classical and measurement instructions
κ: Execution state (program)→ control instructions (e.g., jumps)
# Quil Example
H 3
MEASURE 3 [4]
JUMP-WHEN @END [5]
.
.
.QAM: Ψ0, C0, κ0
Ψ1, C0, κ1
1. Hadamard on qubit 3
0. Initialize into zero states
Ψ2, C0, κ2
Ψ3, C1, κ22. Measure qubit 3 into bit #4
Outcome 0
Outcome 1...
...
Ψ2, C0, κ3
...
3. Jump to end of program if bit #5 is TRUE
![Page 49: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/49.jpg)
Quantum Processor
H 0CNOT 0 1MEASURE 0 [7]MEASURE 1 [3]WAIT
C: Classical Shared Memory (bits)
Classical Processor
if C[3] + C[7] == 2: theta = 3*pi/7
...
continue_from_wait()...
0 0 0 0 0 0 0 0 0 0 0 0 0 01 1
The Quil Programming ModelQuantum/classical synchronization with shared classical state.
![Page 50: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/50.jpg)
Superconducting Processors & Simulators
Quantum Virtual Machine19Q
Cloud Compute Backends
QuilInstr. Set pyQuil
Software Dev Kit
Open Source Python libraries
github.com/rigetticomputing
grove(VQE, QAOA,
etc ...)
ForestA Hybrid Cloud Quantum Programming Environment
![Page 51: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/51.jpg)
PyQuilControl
Computer
Qubit operations
0
1
0 1 0 1 0 1 1 0 0 0 1...
Readout
Pulse program
QPU
![Page 52: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/52.jpg)
Sign up in one click
Forest
rigetti.com/forest
![Page 53: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/53.jpg)
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
![Page 54: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/54.jpg)
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
bits:[0]...[N]
qubits:0...M
QPUCPU
1. Send programe.g.X 0CNOT 0 1
3. Sample
qubits:0...M
2. Prep Distribution
![Page 55: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/55.jpg)
bits:[0]...[N]
qubits:0...M
QPUCPU
1. Send programe.g.RX( ) 2
3. Sample
qubits:0...M
2. Prep Distribution
By parameterizing quantum programs we can train them to be robust to noise
How do I program a quantum computer?Hybrid Quantum Computers | Quantum Programming | Hybrid Programming | Hybrid Algorithms
4. Optimize choice of against some objective
![Page 56: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/56.jpg)
Quantum Machine LearningA generative modeling approach for benchmarking and training shallow quantum circuits. (Benedetti et al. 2018)
> Quantum machine learning in feature Hilbert spaces. (Schuld and Killoran 2018)
> Quantum circuit learning. (Mitarai et al. 2018)
> Quantum neuron: an elementary building block for machine learning on quantum computers. (Cao et al. 2017)
![Page 57: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/57.jpg)
1. MOLECULAR DESCRIPTION 2. MAP TO QUBIT REPRESENTATION
e.g. Bravyi-Kitaev or Jordan-Wigner Transform
3. PARAMETERIZED ANSATZ
e.g. Unitary Coupled Cluster Variational Adiabatic Ansatz
Wecker, D., et al. (2015). Progress towards practical quantum variational algorithms. Physical Review A, 92(4), 042303.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.
Peruzzo, A., et al. (2014). A variational eigenvalue solver on a photonic quantum processor. Nature communications, 5.
e.g. DI-HYDROGEN
e.g. Electronic Structure Hamiltonian
PREPARE QUANTUM STATE ( )
MEASURE TERM 2
MEASURE TERM N
MEASURE TERM 1
…
QUANTUM PROCESSOR CLASSICAL PROCESSOR
SUMTERMS
CLASSICALOPTIMIZATION OF
ANSATZ PARAMETER:
4. RUN Q.V.E. QUANTUM-CLASSICAL HYBRID ALGORITHM
The Variational Quantum EigensolverUsed for the electronic structure problem in quantum chemistry
![Page 58: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/58.jpg)
Peruzzo et al. 1304.3061 O’Malley et al. 1512.06860
Kandala et al. 1704.05018
VQE Simulations on Quantum Hardware
![Page 59: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/59.jpg)
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]
![Page 60: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/60.jpg)
QAOA in ForestIn 14 lines of code
from pyquil.quil import Programfrom pyquil.gates import Hfrom pyquil.paulis import sI, sX, sZ, exponentiate_commuting_pauli_sumfrom pyquil.api import QPUConnection
graph = [(0, 1), (1, 2), (2, 3)]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())
program = init_state_prog + qaoa_ansatz([0., 0.5], [0.75, 1.])
qvm = QPUConnection()qvm.run_and_measure(program, qubits=nodes, trials=10)
![Page 61: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/61.jpg)
Open areas in quantum programming
> Debuggers
> Optimizing compilers
> Application specific packages
> Adoption and implementationsforestopenfermion
Forest
OpenFermion XaCC
![Page 62: April 3, 2018 Programming Stanford Platform Lab Seminar Rigetti … Talks/2018/Will... · 2019-03-11 · A Platform for Quantum Programming Will Zeng Rigetti Computing Stanford Platform](https://reader034.fdocuments.in/reader034/viewer/2022042201/5ea126b0b58a3b6e836fba47/html5/thumbnails/62.jpg)
Q1. Why program a quantum computer?New power | New opportunity | Fundamental curiosity
Q2. How do I program a quantum computer?Hybrid quantum programming using Forest and Quil