• Stars
    star
    100
  • Rank 338,641 (Top 7 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simulations of photonic quantum programmable gate arrays

Quantum programmable gate arrays

Overview

This repository contains the gradient-based optimization code for the paper "Universal programmable photonic architecture for quantum information processing". In this paper, we present a photonic integrated circuit architecture for a quantum programmable gate array (QPGA) capable of preparing arbitrary quantum states and operators. The architecture consists of a lattice of phase-modulated Mach-Zehnder interferometers, which perform rotations on path-encoded photonic qubits, and embedded quantum emitters, which use a two-photon scattering process to implement a deterministic controlled-Z operation between adjacent qubits. By appropriately setting phase shifts within the lattice, the device can be programmed to implement any quantum circuit without hardware modifications. We provide algorithms for exactly preparing arbitrary quantum states and operators on the device and we show that gradient-based optimization can train a simulated QPGA to automatically implement highly compact approximations to important quantum circuits with near-unity fidelity.

Dependencies

  • Python >3.6
  • TensorFlow 1.14
  • SQUANCH >1.1
  • numpy
  • scipy
  • matplotlib

Components

The structure of the repository is as follows:

  • qpga_figures.ipynb: a notebook containing the code to generate the figures used in the paper
  • qpga
    • callbacks.py: provides Keras-style callbacks for recording the logical operators and states implemented by the simulated QPGA over the course of training
    • circuits.py: collection of quantum circuits simulated in SQUANCH used in preparing training data
    • constants.py: various constants used in the repository
    • fidelity_search.py: trains QPGAs of increasing depth to match input to output data to a desired fidelity
    • linalg.py: linear algebraic helper functions
    • model.py: contains the main TensorFlow model for simulating a QGPA
    • plotting.py: helper functions for generating figures used in the paper
    • state_preparation.py: helper functions for preparing quantum state vectors
    • training.py: contains a helper function for instantiating and compiling a QGPA to fit to input/output data
    • utils.py: miscellaneous utilities
  • scripts
    • run_ghz_state_fidelity.py: script to find a QPGA which prepares GHZ states to a desired fidelity
    • run_qft_fidelity_search.py: script to find a QPGA which implements a quantum Fourier transform to within a desired fidelity

Training histories are written to h5py files which are not included in this repository, but are available upon request from the first author.

Supplementary materials

Supplementary materials for the arXiv version of the paper are listed below. Click an image to view it in higher resolution, or click the [source] link to download the original file.

S1: Conceptual animation of the two-photon scattering process described in Section IIB

[source]

This animation depicts the four steps of the two-photon scattering process:

  1. Photon $A$ at frequency $\omega$ causes the atom, which is initialized in state $\ket{1}$, to partially transition from $\ket{1} \rightarrow \ket{3}$ with an amplitude of $\ket{3}$ corresponding to the photon occupancy in the waveguide. This emits an auxiliary photon $A'$ with frequency $\omega'$, which is reflected by one of the narrow-band mirrors and travels down the delay line.
  2. While photon $A'$ is in the delay line, photon $B$, also at frequency $\omega$, is injected into the system. Interaction with the $\ket{1}$ component of the atomic states results in the transition $\ket{1}\rightarrow\ket{3}$ and releases an auxiliary photon $B'$ with frequency $\omega'$ down the delay line, while interaction with the $\ket{3}$ component imparts a $\pi$ phase shift onto $B$ and reflects it back into the waveguide.
  3. Photon $A'$ arrives back at the 4LS after traversing the delay line. By time reversal arguments, sending the output photon $A'$ back into the atom retrieves photon $A$, which exits the inner cell through its original waveguide.
  4. Photon $B'$ arrives back at the 4LS, retrieving photon $B$ as in step 3.

S2: Animation depicting optimization of a QPGA to perform a five-qubit quantum Fourier transform

[source]

Optimization of a QPGA to prepare a quantum Fourier transform on five input qubits. (Top left) The operator implemented by the QPGA at each point in training. The square array represents the magnitude (relative to the maximum element) and phase of the projection of the operator onto the lexicographically-ordered computational basis states, encoded in the respective size and hue of the squares. (Top right) The target 5-qubit QFT operator. (Bottom) Fidelity between the implemented and target operator over the course of training.

Citing

If you found this paper or repository useful, please cite us using:

@article{Bartlett2020Universal,
  title = {Universal programmable photonic architecture for quantum information processing},
  author = {Bartlett, Ben and Fan, Shanhui},
  journal = {Phys. Rev. A},
  volume = {101},
  issue = {4},
  pages = {042319},
  numpages = {15},
  year = {2020},
  month = {Apr},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevA.101.042319},
  url = {https://link.aps.org/doi/10.1103/PhysRevA.101.042319}
}

More Repositories

1

wavetorch

🌊 Numerically solving and backpropagating through the wave equation
Python
510
star
2

ceviche

🦐 Electromagnetic Simulation + Automatic Differentiation
Python
326
star
3

neuroptica

Flexible simulation package for optical neural networks
Python
205
star
4

angler

Frequency-domain photonic simulation and inverse design optimization for linear and nonlinear devices
Python
150
star
5

legume

🌱 Guided-mode expansion of photonic crystal slabs
Python
102
star
6

workshop-invdesign

πŸ“ Workshop material for optical inverse design and automatic differentiation
Jupyter Notebook
95
star
7

fdfdpy

Pure Python implementation of the finite difference frequency domain (FDFD) method for electromagnetics
Jupyter Notebook
53
star
8

ising-compiler

🍰 Compiling your code to an Ising Hamiltonian so you don't have to!
Jupyter Notebook
48
star
9

FDFD.jl

Pure Julia implementation of the finite difference frequency domain (FDFD) method for electromagnetics
Jupyter Notebook
32
star
10

Rigorous-Coupled-Wave-Analysis

Rigorous coupled wave analysis and PWEM implemented in short readable python codes
Jupyter Notebook
31
star
11

vtmm

Vectorized transfer matrix method (TMM) for computing the optical reflection and transmission of multilayer planar stacks
Python
17
star
12

simphox

Another inverse design library (wip)
Python
17
star
13

neuroptica-notebooks

Jupyter notebooks for the neuroptica simulator
Jupyter Notebook
8
star
14

Isolators_CMT

🎭 Coupled-mode theory for some modulation-based optical isolators
Jupyter Notebook
7
star
15

electro-optic-activation

This notebook contains code for the machine learning tasks in the electro-optic activation function paper
Jupyter Notebook
5
star
16

FDFDViz.jl

Visualization and plotting helper functions for FDFD.jl
Julia
4
star
17

synthetic-hamiltonians

Jupyter Notebook
3
star
18

rcwa4d

Rigorous Coupled Wave Analyses (RCWA) for layered structures with incommensurate periodicities
Jupyter Notebook
1
star
19

bilevel-inverse-design-of-optical-switch

inverse design of optical switch based on bilevel optimization inspired by meta-learning
Jupyter Notebook
1
star