You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The names SingleQubitQPDGate and TwoQubitQPDGate don't really summarize the essence of what distinguishes these gates in our workflow. It's not really the number of qubits that distinguishes them: rather, it's whether they have been "cut apart" already.
Motivated by our decision to focus on the two-qubit form of QPD gates in the high-level part of the workflow, I am proposing something like the following rename. (I am also folding the proposal to rename QPDGate -> QPDInstruction, into this, as QPDGate is really an Instruction, and the Move "gate" of #174 is not actually a Gate.)
BaseQPDGate -> BaseQPDInstruction
TwoQubitQPDGate -> QPDInstruction This is the primary object users will use if they want to place decompositions manually rather than use partition_circuit_qubits.
SingleQubitQPDGate -> CutQPDInstruction, or something along these lines. Siblings of this object will be important as transpilation is performed; otherwise, the transpiler would think a QPDInstruction could only be performed if on adjacent qubits, and it would add swap gates in the routing pass to make this happen. So not only is this class necessary when we cut the circuit into disconnected components; it is relevant when we want to perform circuit cutting at all. However, great care must be taken with this object, as there is always a "hidden" variable that connects the gates that have been cut apart (otherwise it would be impossible to simulate entanglement).
qpdbasis_from_gate -> qpdbasis_from_instruction for consistency.
The text was updated successfully, but these errors were encountered:
The names
SingleQubitQPDGate
andTwoQubitQPDGate
don't really summarize the essence of what distinguishes these gates in our workflow. It's not really the number of qubits that distinguishes them: rather, it's whether they have been "cut apart" already.Motivated by our decision to focus on the two-qubit form of QPD gates in the high-level part of the workflow, I am proposing something like the following rename. (I am also folding the proposal to rename
QPDGate
->QPDInstruction
, into this, asQPDGate
is really anInstruction
, and theMove
"gate" of #174 is not actually aGate
.)BaseQPDGate
->BaseQPDInstruction
TwoQubitQPDGate
->QPDInstruction
This is the primary object users will use if they want to place decompositions manually rather than usepartition_circuit_qubits
.SingleQubitQPDGate
->CutQPDInstruction
, or something along these lines. Siblings of this object will be important as transpilation is performed; otherwise, the transpiler would think aQPDInstruction
could only be performed if on adjacent qubits, and it would add swap gates in the routing pass to make this happen. So not only is this class necessary when we cut the circuit into disconnected components; it is relevant when we want to perform circuit cutting at all. However, great care must be taken with this object, as there is always a "hidden" variable that connects the gates that have been cut apart (otherwise it would be impossible to simulate entanglement).qpdbasis_from_gate
->qpdbasis_from_instruction
for consistency.The text was updated successfully, but these errors were encountered: