-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PauliEvolution gate #6975
PauliEvolution gate #6975
Conversation
- add synthesis classes to imports - implement lie-trotter w/o opflow - PauliEvo shows as "exp(it <term>)"
and use HamiltonianGate instead of direct matrix evo
Needs a reno release note |
Co-authored-by: Steve Wood <40241007+woodsp-ibm@users.noreply.github.com>
Co-authored-by: Ali Javadi-Abhari <ajavadia@users.noreply.github.com>
- synthesize(self) - don't show `t` in evo-gate draw - delete pauli_evolution.py
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on this @Cryoris. I made a couple small changes, the most notable being moving qiskit.circuit.synthesis
one level up to qiskit.synthesis
, as I really would like to separate circuit descriptions from how they are compiled. And this can be a folder to add new synthesis methods in for other high level objects.
It looks good to me now. There is a slight thing in the drawing that doesn't show the coeffs (so it shows e^iXX and e^-iXX as the same). But I couldn't find a good solution immediately, it can be a followup.
Summary
Implement an evolution gate for the evolution of sums (or sums of sums) of Paulis. The evolution gate is an opaque block containing all evolution information so the compiler can select do the synthesis and do optimizations.
Closes #6863.
Details and comments
In a nutshell:
PauliEvolutionGate
contains the evolution info (Operator and evolution time) and can be equipped with anEvolutionSynthesis
to specify how to unroll. Eventually the compiler should select that.EvolutionSynthesis
determines how to synthesize the evolution and for now includesLieTrotter
andSuzukiTrotter
MatrixExponentiation
Optimizations we can do with this:
Design doc: https://gist.github.com/Cryoris/abc9753fd7dfb0cc3b3a83aa58a182e3