UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
Basen: TransformationPass
Synthese von Gattern entsprechend ihren Basisgattern.
Synthese von Unitarien über einige Basisgatter.
Dieser Pass kann Unitaritäten unter Berücksichtigung bestimmter Gate-Fidelitäten approximieren (über target). Eine genauere Annäherung kann durch Einstellen eines heuristischen Reglers erzwungen approximation_degree werden.
Dieser Durchlauf ist multithreaded, wenn das Standard-Synthese-Plugin verwendet wird, und startet standardmäßig möglicherweise einen Thread-Pool mit einer Anzahl von Threads, die der Anzahl der CPUs entspricht. Die Anzahl der Threads können Sie über die RAYON_NUM_THREADS Umgebungsvariable anpassen. Wenn man beispielsweise einstellt RAYON_NUM_THREADS=4 , würde der Thread-Pool auf 4 Threads begrenzt werden.
Parameter
- basis_gates – Liste der zu adressierenden Gate-Namen. Wenn dies nicht angegeben wird, muss das
targetArgument verwendet werden. Wenn sowohl dies als auchtargetangegeben werden, wird der Wert vontargetverwendet und dies wird ignoriert. - approximation_degree – Heuristischer Regler zur Schaltungsnäherung ( 1.0=no -Näherung, 0.0=maximal -Näherung). Durch eine Annäherung lässt sich die Kosten der synthetisierten Schaltung senken, allerdings auf Kosten einer Abweichung vom ursprünglichen Unitar. In
Nonediesem Fall erfolgt die Näherung auf der Grundlage der Gattertreue. - coupling_map – Die Kopplungskarte des Ziels für den Fall, dass die Synthese auf einer physikalischen Schaltung erfolgt.
True``TrueDie Richtung der Kopplungsabbildung wird berücksichtigt, wennpulse_optimize/Noneist undnatural_direction/ istNone. - pulse_optimize – Gibt an, ob Impulse während der Synthese optimiert werden sollen. Bei einem Wert von
Nonewird der Versuch unternommen, aber im Falle eines Fehlschlags auf eine Ausweichlösung zurückgegriffen. Ein Wert vonTruelöst einen Fehler aus, wenn die pulsoptimierte Synthese fehlschlägt. - natural_direction – Gibt an, ob bei der Synthese die Richtungsabhängigkeit von 2-Qubit-Gattern berücksichtigt werden soll.
NoneGilt nur, wennpulse_optimizeentweder oder istTrue. Die natürliche Richtung wird ermittelt, indem zunächst geprüft wird, ob die Kopplungsabbildung unidirektional ist. Wenn keine Kopplungskarte vorhanden ist oder die Kopplungskarte bidirektional ist, wird die Gate-Richtung mit der kürzeren Dauer aus den Zieleigenschaften verwendet.TranspilerErrorWenn auf „True“ gesetzt und keine natürliche Richtung ermittelt werden kann, wird eine Ausnahme ausgelöst. Wenn der Wert auf „None“ gesetzt ist, wird keine Ausnahme ausgelöst, wenn keine natürliche Richtung ermittelt werden kann. - synth_gates – Liste der zu synthetisierenden Gates.
['unitary']Wenn „None“ undpulse_optimize„False“ oder „None“ ist, wird standardmäßig verwendet. WennNoneundpulse_optimize == True, dann gilt standardmäßig['unitary', 'swap'] - Methode – Das zu verwendende Plugin für die unitarische Synthese.
- min_qubits - Die Mindestanzahl von Qubits in der zu synthetisierenden Unitary. Wenn diese Einstellung gesetzt ist und die Unitary weniger als die angegebene Anzahl von Qubits hat, wird sie nicht synthetisiert.
- plugin_config - Optionale zusätzliche Konfigurationsargumente (als
dict), die direkt an das angegebene unitäre Synthese-Plugin übergeben werden. Standardmäßig hat dies keine Auswirkungen, da das Standard-Plugin keine zusätzlichen Argumente hat. Lesen Sie in der Dokumentation Ihres unitären Synthese-Plugins nach, wie Sie dies verwenden können. - target - Das optionale
Targetfür das Zielgerät, für das der Pass kompiliert wird. Wenn dies angegeben wird, werden die fürbasis_gatesundcoupling_mapeingestellten Werte ersetzt. - fallback_on_default – Legt fest, ob die Standardsynthesemethode verwendet werden soll, falls eine vom Standard abweichende Synthese
methodangegeben wurde, diese jedoch entweder die Operation nicht synthetisieren kann oder die synthetisierte Schaltung nicht dem Ziel entspricht.
Erhöht
TranspilerError – wenn method angegeben wurde, aber nicht in der Liste der installierten Plugins zu finden ist. Die Liste der installierten Plugins kann mit folgendem Befehl abgefragt werden: unitary_synthesis_plugin_names()
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)
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 den Pass UnitarySynthesis auf dag aus.
Parameter
dag (DAGCircuit) – eingangstag.
Rückgabe
Ausgabe dag mit UnitaryGates auf Zielbasis synthetisiert.
Rückgabetyp
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