GTorlai / PastaQ.jl

Package for Simulation, Tomography and Analysis of Quantum Computers
Apache License 2.0
142 stars 23 forks source link

Add runcircuit to evaluate amplitudes of a set of measurement data #212

Open GTorlai opened 3 years ago

mtfishman commented 3 years ago

Would the operation involve projecting an MPS onto a series of product states?

GTorlai commented 3 years ago

Yes, and I imagine the naive way would be to apply half the circuit to the zero state, and half the circuit (dag) to the product state of interest, and then taking an inner product of two MPSs.

mtfishman commented 3 years ago

Yeah. A slightly more sophisticated method beyond exactly splitting the circuit in half would be to do something like apply one gate at a time, and switch which state you apply the gate to depending on which state has the lower maximal bond dimension (so that the costs automatically stay balanced).

EDIT: a disadvantage is that splitting the circuit in half up front would allow doing the two halves in parallel, which would be more challenging with the gate-by-gate approach.

Also @LinjianMa has a working prototype for an ITensor wrapper for the tensor network optimization methods available in AutoHOOT (which uses opt_einsum as a backend), which we can use for a full state simulation to compare with whatever MPS method we put into PastaQ. See here: https://github.com/LinjianMa/AutoHOOT.jl though it is very new so interfaces may change.

GTorlai commented 3 years ago

This functionality now requires contraction graph optimization, which is underway within ITensor