[discussion] Move the borders between QVM and QPU
See original GitHub issueThere are typically three stages in quantum programming
- Write and debug using wavefunction-based methods
- Run the program as if it were running on a real device, perhaps with a noise model
- Run the program on a device.
The current distinction between QVMConnection
and QPUConnection
groups (1,2) and makes (3) separate. This causes some API warts: the difference between the two run_and_measure
s, and the different behavior on the QVMConnection
between run
+MEASURE
and run_and_measure
.
I propose we make (1) separate and group (2,3). The quil paper specifies
The QAM may be implemented either classically or on quantum hardware. A classical implementation is called a Quantum Virtual Machine (QVM). We describe one such implementation in Section V-F. An implementation on quantum hardware is called a Quantum Processing Unit (QPU).
(h/t @tarballs-are-good ) so (2) should be named with the QVM moniker, (3) should continue to be named with the QPU moniker, and (1) should be re-named to not mention a QVM but rather stress the wavefunction simulation aspect.
Issue Analytics
- State:
- Created 6 years ago
- Reactions:1
- Comments:8 (8 by maintainers)
Top GitHub Comments
Is this just a discussion about naming conventions and constructor function signatures, or can we also debate the different behaviors of
run
when using QVM vs QPU?I personally would want a strict behavioral equivalence between the QVM and the QPU, and just struggled with the fact that the QVM wanted
MEASURE
instructions in order to make the run meaningful, which was quite frustrating (and not well documented).@mpharrigan @tarballs-are-good
Example of what this might look like: