WrapAngles
class qiskit.transpiler.passes.WrapAngles(*args, **kwargs)
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")
Parameter
-
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_REGISTRYObjekt verwendet.Sofern Sie nicht vorhaben, diesen Pass eigenständig auszuführen oder eine benutzerdefinierte Version zu
PassManagererstellen, die diesen Pass enthält, sollten Sie sich auf verlassenDEFAULT_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.
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.
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:
WrapAngles.DEFAULT_REGISTRYqiskit.transpiler.passes.utils.wrap_angles.WRAP_ANGLE_REGISTRY
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)
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
name
run
run(dag)
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)
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