All Projects → fancompute → Qpga

fancompute / Qpga

Licence: mit
Simulations of photonic quantum programmable gate arrays

Programming Languages

optics
23 projects

Projects that are alternatives of or similar to Qpga

Pyepr
Powerful, automated analysis and design of quantum microwave chips & devices [Energy-Participation Ratio and more]
Stars: ✭ 81 (+19.12%)
Mutual labels:  jupyter-notebook, quantum-computing, quantum
Quantum
Microsoft Quantum Development Kit Samples
Stars: ✭ 3,453 (+4977.94%)
Mutual labels:  jupyter-notebook, quantum-computing, quantum
Quantum Learning
This repository contains the source code used to produce the results presented in the paper "Machine learning method for state preparation and gate synthesis on photonic quantum computers".
Stars: ✭ 89 (+30.88%)
Mutual labels:  jupyter-notebook, quantum-computing, quantum
Quantumcomputingbook
Companion site for the textbook Quantum Computing: An Applied Approach
Stars: ✭ 386 (+467.65%)
Mutual labels:  jupyter-notebook, quantum-computing, quantum
Teach Me Quantum
⚛ 10 week Practical Course on Quantum Information Science and Quantum Computing - with Qiskit and IBMQX
Stars: ✭ 118 (+73.53%)
Mutual labels:  jupyter-notebook, quantum-computing, quantum
Quantum-Computing-Collection-Of-Resources
A Well Maintained Repository On Quantum Computing Resources [Code+Theory] Updated Regularly During My Time At IBM, Qubit x Qubit And The Coding School's Introduction To Quantum Computing Course '21
Stars: ✭ 183 (+169.12%)
Mutual labels:  quantum, quantum-computing
Qpp
A modern C++11 quantum computing library
Stars: ✭ 277 (+307.35%)
Mutual labels:  quantum-computing, quantum
Blueqat
Quantum Computer Library for Everyone
Stars: ✭ 298 (+338.24%)
Mutual labels:  quantum-computing, quantum
Quantumkatas
Tutorials and programming exercises for learning Q# and quantum computing
Stars: ✭ 3,713 (+5360.29%)
Mutual labels:  jupyter-notebook, quantum-computing
Quantum-Computer-Simulator-with-Algorithms
C++ simulator of quantum registers and quantum algorithms
Stars: ✭ 15 (-77.94%)
Mutual labels:  quantum, quantum-computing
Quantumlibraries
Q# libraries for the Quantum Development Kit
Stars: ✭ 316 (+364.71%)
Mutual labels:  quantum-computing, quantum
Grove
Quantum algorithms built using pyQuil.
Stars: ✭ 332 (+388.24%)
Mutual labels:  quantum-computing, quantum
miniqubit
Quantum emulator of the IBM Quantum experience
Stars: ✭ 24 (-64.71%)
Mutual labels:  quantum, quantum-computing
qibo
A framework for quantum computing with hardware acceleration.
Stars: ✭ 120 (+76.47%)
Mutual labels:  quantum, quantum-computing
Qiskit Terra
Qiskit is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and algorithms.
Stars: ✭ 3,177 (+4572.06%)
Mutual labels:  quantum-computing, quantum
learn-qc-with-python-and-qsharp
Companion code for Learn Quantum Computing with Python and Q# Book by Dr. Sarah Kaiser and Dr. Chris Granade 💖
Stars: ✭ 62 (-8.82%)
Mutual labels:  quantum, quantum-computing
Qiskit Textbook
A university quantum algorithms/computation course supplement based on Qiskit
Stars: ✭ 404 (+494.12%)
Mutual labels:  jupyter-notebook, quantum-computing
Strawberryfields
Strawberry Fields is a full-stack Python library for designing, simulating, and optimizing continuous variable (CV) quantum optical circuits.
Stars: ✭ 505 (+642.65%)
Mutual labels:  quantum-computing, quantum
Awesome Ai Books
Some awesome AI related books and pdfs for learning and downloading, also apply some playground models for learning
Stars: ✭ 855 (+1157.35%)
Mutual labels:  jupyter-notebook, quantum-computing
unitaryhack
Rules and information for the 2021 unitaryHACK event hosted by @unitaryfund
Stars: ✭ 16 (-76.47%)
Mutual labels:  quantum, quantum-computing

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}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].