Skip to main content
IBM Quantum Platform

UnitarySynthesis

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

GitHub

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 target Argument verwendet werden. Wenn sowohl dies als auch target angegeben werden, wird der Wert von target verwendet 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, wenn pulse_optimize /None ist und natural_direction / istNone.
  • pulse_optimize – Gibt an, ob Impulse während der Synthese optimiert werden sollen. Bei einem Wert von None wird der Versuch unternommen, aber im Falle eines Fehlschlags auf eine Ausweichlösung zurückgegriffen. Ein Wert von True lö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, wenn pulse_optimize entweder oder ist True . 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“ und pulse_optimize „False“ oder „None“ ist, wird standardmäßig verwendet. Wenn None und pulse_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 Target für das Zielgerät, für das der Pass kompiliert wird. Wenn dies angegeben wird, werden die für basis_gates und coupling_map eingestellten Werte ersetzt.
  • fallback_on_default – Legt fest, ob die Standardsynthesemethode verwendet werden soll, falls eine vom Standard abweichende Synthese method angegeben 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)

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 Pass UnitarySynthesis auf dag aus.

Parameter

dag (DAGCircuit) – eingangstag.

Rückgabe

Ausgabe dag mit UnitaryGates auf Zielbasis synthetisiert.

Rückgabetyp

DAGCircuit

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.