Skip to main content
IBM Quantum Platform

WrapAngles

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

GitHub

Basen: TransformationPass

Umfalten von Winkeln außerhalb der im Ziel angegebenen Grenze.

In diesem Durchgang werden alle Gatter in der Schaltung überprüft, und es wird geprüft, ob es Gatter außerhalb der im Ziel festgelegten Grenzen gibt. Wenn Gatter außerhalb der Begrenzung identifiziert werden, wird der Callback im Ziel aufgerufen, um das Gatter außerhalb der Begrenzung durch einen gleichwertigen Teilschaltkreis zu ersetzen. Dieser Durchlauf wird nicht bei parametrisierten Gattern durchgeführt, auch wenn das Gatter unparametrisierte Parameter außerhalb einer bestimmten Grenze hat. Sind in der Schaltung parametrisierte Gatter vorhanden, so werden diese bei diesem Durchlauf ignoriert, da zur Transformation des Gatters gebundene Winkel erforderlich sind. Das folgende Beispiel zeigt, wie der Callback-Mechanismus und die Registrierung funktionieren, zeigt aber keine nützliche Umwandlung, ist aber einfach zu verfolgen:

from qiskit.circuit import Gate, Parameter, Qubit, QuantumCircuit
from qiskit.circuit.library import RZGate
from qiskit.dagcircuit import DAGCircuit
from qiskit.transpiler.passes import WrapAngles
from qiskit.transpiler import Target, WrapAngleRegistry

param = Parameter("a")
circuit = QuantumCircuit(1)
circuit.rz(6.8, 0)
target = Target(num_qubits=1)
target.add_instruction(RZGate(param), angle_bounds=[(0, 0.5)])

def callback(angles, _qubits):
    angle = angles[0]
    if angle > 0:
        number_of_gates = angle / 0.5
    else:
        number_of_gates = (6.28 - angle) / 0.5
    dag = DAGCircuit()
    dag.add_qubits([Qubit()])
    for _ in range(int(number_of_gates)):
        dag.apply_operation_back(RZGate(0.5), [dag.qubits[0]])
    return dag

registry = WrapAngleRegistry()
registry.add_wrapper("rz", callback)
wrap_pass = WrapAngles(target, registry)
res = wrap_pass(circuit)
res.draw("mpl")
Schaltplan des Ausgangs nach Ausführung des Durchlaufs „ WrapAngles “

Parameter

  • target (Target) – Die Target steht für die Ziel-QPU.

  • registry (WrapAngleRegistry) –

    Das Register der Umhüllungsfunktionen, die vom Durchgang verwendet werden, um die Winkel eines Tors zu umhüllen. Wenn nicht angegeben, wird das globale DEFAULT_REGISTRY Objekt verwendet.

    Sofern Sie nicht vorhaben, diesen Pass eigenständig auszuführen oder eine benutzerdefinierte Version zu PassManager erstellen, die diesen Pass enthält, sollten Sie sich auf verlassen DEFAULT_REGISTRY.


Attribute

DEFAULT_REGISTRY

Standardwert: <qiskit._accelerate.angle_bound_registry.WrapAngleRegistry object>

Eine globale Instanz, WrapAngleRegistry die standardmäßig von diesem Durchlauf verwendet wird, wenn keine explizite Registrierung angegeben ist.

Anmerkung

Dies ist aufgrund eines Versehens in Qiskit auch öffentlich qiskit.transpiler.passes.utils.wrap_angles.WRAP_ANGLE_REGISTRY zugänglich unter dem Pfad 2.2 (wobei der erweiterte Pfad der einzig gültige Speicherort ist). Es wird dringend empfohlen, über auf dieses Objekt zuzugreifen. Wenn Sie jedoch WrapAngles keine Unterstützung für Qiskit benötigen, verwenden Sie 2.2.

Anmerkung

Versuche, ein völlig neues Registrierungsobjekt in den qiskit.transpiler.passes.utils.wrap_angles Pfad zu schreiben, werden in Qiskit 2.3 und höher nicht in den Standardeinstellungen berücksichtigt. Wir empfehlen zwar nicht, das Objekt vollständig zu überschreiben, aber wenn Sie dies dennoch tun müssen und Qiskit 2.2 oder höher unterstützen möchten, sollten Sie Verweise auf dasselbe Objekt in beide schreiben:

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 einen Durchlauf auf dem DAGCircuit durch. Dies wird durch den Entwickler des Ausweises umgesetzt.

Parameter

dag - der dag, auf dem der Pass ausgeführt wird.

Erhöht

NotImplementedError - wenn dies für einen Durchgang nicht implementiert wird.

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.