Skip to main content
IBM Quantum Platform

GateDirection

class qiskit.transpiler.passes.GateDirection(*args, **kwargs)

GitHub

Basen: TransformationPass

Ändern Sie asymmetrische Gatter so, dass sie der Kopplungsrichtung der Hardware entsprechen.

Dieser Durchgang unterstützt die Ersetzung der cx-, cz-, ecr-, swap-, rzx-, rxx-, ryy- und rzz-Tore unter Verwendung der folgenden Identitäten:

                     ┌───┐┌───┐┌───┐
q_0: ──■──      q_0: ┤ H ├┤ X ├┤ H ├
     ┌─┴─┐  =        ├───┤└─┬─┘├───┤
q_1: ┤ X ├      q_1: ┤ H ├──■──┤ H ├
     └───┘           └───┘     └───┘


                  global phase: 3π/2
     ┌──────┐           ┌───┐ ┌────┐┌─────┐┌──────┐┌───┐
q_0: ┤0     ├     q_0: ─┤ S ├─┤ √X ├┤ Sdg ├┤1     ├┤ H ├
     │  ECR │  =       ┌┴───┴┐├────┤└┬───┬┘│  Ecr │├───┤
q_1: ┤1     ├     q_1: ┤ Sdg ├┤ √X ├─┤ S ├─┤0     ├┤ H ├
     └──────┘          └─────┘└────┘ └───┘ └──────┘└───┘
Note: This is done in terms of less-efficient S/SX/Sdg gates instead of the more natural
`RY(pi /2)` so we have a chance for basis translation to keep things in a discrete basis
during resynthesis, if that's what's being asked for.


     ┌──────┐          ┌───┐┌──────┐┌───┐
q_0: ┤0     ├     q_0: ┤ H ├┤1     ├┤ H ├
     │  RZX │  =       ├───┤│  RZX │├───┤
q_1: ┤1     ├     q_1: ┤ H ├┤0     ├┤ H ├
     └──────┘          └───┘└──────┘└───┘

cz, swap, rxx, ryy and rzz directions are fixed by reversing their qargs order.

Bei diesem Durchlauf wird davon ausgegangen, dass die Positionen der Qubits im DAGCircuit.qubits attribut die physikalischen Qubit-Indizes sind. Wenn zum Beispiel dag.qubits[0] das Qubit 0 in der CouplingMap oder Target.

GateDirection passieren.

Parameter

  • coupling_map (CouplingMap) – Gerichtetes Diagramm, das eine Kopplungskarte darstellt.
  • target (Target) – Das für diesen Durchgang zu verwendende Backend-Ziel. Wenn dies angegeben wird, wird es anstelle der Kopplungskarte verwendet

Attribute

is_analysis_pass

Prüfen Sie, ob der Pass ein Analysepass ist.

Wenn der Pass ein AnalysisPass, ist, bedeutet dies, dass der Pass die DAG analysieren und die Ergebnisse dieser Analyse in den Eigenschaftssatz schreiben kann. Änderungen an der DAG sind bei dieser Art von Pass nicht zulässig.

is_transformation_pass

Prüfen Sie, ob der Pass ein Transformationspass ist.

Wenn es sich bei dem Pass um TransformationPass, handelt, bedeutet dies, dass der Pass die DAG manipulieren kann, aber den Eigenschaftssatz nicht ändern kann (aber er kann gelesen werden).


Methoden

execute

execute(passmanager_ir, state, callback=None)

GitHub

Ausführen der Optimierungsaufgabe für die Eingabe Qiskit IR.

Parameter

  • passmanager_ir (DAGCircuit) – Qiskit IR zur Optimierung.
  • state (DAGCircuit) – Zustand, der mit der Ausführung des Workflows durch den Pass-Manager selbst verbunden ist.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Eine Callback-Funktion, die bei jeder Ausführung einer Optimierungsaufgabe aufgerufen wird.

Rückgabe

Optimierte Qiskit IR und Stand des Workflows.

Rückgabetyp

Tupel [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Name des Passes.

Rückgabetyp

str

run

run(dag)

GitHub

Führen Sie den GateDirection Pass auf dag.

Dreht die cx-Knoten so um, dass sie der gerichteten Kopplungskarte entsprechen. Ändert die Eingabe dag.

Parameter

dag (DAGCircuit) – DAG auf Karte.

Rückgabe

Die neu angeordnete dag für die Kopplungskarte

Rückgabetyp

DAGCircuit

Erhöht

TranspilerError – Wenn sich die Schaltung nicht allein durch Umdrehen der cx-Knoten abbilden lässt.

update_status

update_status(state, run_state)

GitHub

Aktualisieren Sie den Workflow-Status.

Parameter

  • state (PassManagerState) – Übergeben Sie den Status des Managers zur Aktualisierung.
  • run_state (RunState) – Erledigungsstatus der aktuellen Aufgabe.

Rückgabe

Aktualisierter Status des Passmanagers.

Rückgabetyp

PassManagerState

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.