rigetti / rigetti/pyquil

QVM <-> pyQuil Pain Points

Open
#871 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

discussion :thinking: enhancement :sparkles:
Dominant language
Python
Stars
1.5k
Forks
358
Avg merge
1d 58m
Merged PRs (30d)
4

Description

This is a general list of issues that can be broken out into smaller issues, but I wanted to get them down.

Props to @ecpeterson for writing these. I'm just the messenger. In general, these center around how easy (or not easy) it is to use the QVM with pyQuil.

  1. QVM in density matrix mode returns density matrices when ‘wavefunction’ is requested. Should have a separate name in pyQuil, should check a different set of normalization conditions.
  2. QVM in density matrix mode offers possibility to return probability distribution. Is this call available in pyQuil? It requires different bit unpacking.
  3. QVM in stateful mode offers ‘apply for effect’. Expose this in pyQuil.
  4. Can bit unpacking be treated uniformly? Robert does ctypes casting and Erik does numpy buffers and pyQuil does struct.unpack.
  5. Where does this density matrix stuff sit relative to the QVM <: QAM vs WavefunctionSimulator split? There’s also a ReferenceDensitySimulator that doesn’t belong to this hierarchy.
  6. The Pauli heatmaps from process tomography is useful. Eric wrote some matplotlib code to generate them; he'd like to polish this for inclusion.
  7. How does one take the results of the forest.benchmarking process tomography code and extract from it data suitable for feeding into a tomograph plotter? Like there are standard methods for generating the data, but it would be nice to also have a standard munger to get it into the right form.
  8. Eric would like to include the “cheater’s process tomography” code that he wrote for use against the density matrix QVM.
  9. Polish and publish Erik’s shared memory mode starter notebook, which is very useful.
  10. Legal density matrices obey a bunch of properties (e.g., Hermitian). Make it easier to edit density matrix shared memory w/o exiting this subspace. Eric wrote something to extract a representation as a PauliSum, which was already useful for me.
  11. Expose density matrix QVM in batch mode.
  12. Eric's first attempt at generating these tomographs was to couple the forest.benchmarking code to my local QVM, and this was very slow: 5-10m for a 1% inaccurate picture of a 2Q operator. He thinks the bulk of the slowdown was in the communications layer; it would be worth profiling this and improving these repeated-call scenarios.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no specific files or tests; begin by splitting its twelve QVM and pyQuil pain points into focused issues and tracing the relevant QVM, pyQuil, and forest.benchmarking entry points. Done should be defined separately for each item, such as an exposed capability, a polished notebook, valid tomography data, or a measured communication improvement.

Written by the indexing model from the issue text.

Assessment

Tech stack
matplotlib, numpy, python
Domain
performance, quantum-computing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.