Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_clifford_t_pass_manager

qiskit.transpiler.generate_preset_clifford_t_pass_manager(optimization_level=2, target=None, basis_gates=None, coupling_map=None, initial_layout=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, dt=None, qubits_initially_zero=True, rz_synthesis_config=None)

GitHub

StagedPassManagerEine Clifford+T-Voreinstellung erstellen.

Diese Funktion bietet eine bequeme Möglichkeit, einen voreingestellten Pass-Manager für die Clifford+T-Kompilierung zu erstellen. Wir empfehlen, diese Funktion anstelle von transpile() oder generate_preset_pass_manager() mit einer Clifford+T-Basis zu verwenden, da sie Argumente bereitstellt, die speziell auf Clifford+T-Kompilationen zugeschnitten sind.

Die Zielbeschränkungen für die Erstellung des Pass-Managers können über eine Target Instanz oder über lose Beschränkungen (basis_gates, coupling_map, oder dt) festgelegt werden.

Wenn keine Basisgatter angegeben werden (weder über target noch über basis_gates), werden standardmäßig alle Clifford+T-Gatter in Qiskit als Basisgatter verwendet. Beachten Sie jedoch, dass ein Fehler ausgelöst wird, wenn Basisgatter angegeben werden, diese jedoch keine Clifford+T-Basis darstellen.

Beispiele

Erstellen und Verwenden eines einfachen Clifford+T-Pass-Managers:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_clifford_t_pass_manager

qc = QuantumCircuit(1)
qc.rz(2.3579, 0)

pm = generate_preset_clifford_t_pass_manager()
qct = pm.run(qc)

Es stehen verschiedene Optionen zur Verfügung; weitere Informationen finden Sie in der Dokumentation zu den Argumenten:

rz_synthesis_config = {
    "rz_synthesis_error": 1e-4,
    "rz_cache_error": 1e-5,
}

basis_gates = ["cx", "s", "sdg", "h", "t", "tdg"]
pm = generate_preset_clifford_t_pass_manager(
    rz_synthesis_config=rz_synthesis_config,
    basis_gates=basis_gates,
    optimization_level=3,
)

Parameter

  • optimization_level (int) – Der Optimierungsgrad zur Erzeugung eines StagedPassManager for. Sofern nicht anders angegeben, wird standardmäßig die Optimierungsstufe 2 verwendet. Dies kann 0, 1, 2 oder 3 sein. Höhere Stufen führen zu potenziell optimierteren Schaltkreisen, allerdings auf Kosten einer möglicherweise längeren Transpilierungszeit.

  • target (Target | None) – Das Target steht für ein Kompilierungsziel. Die folgenden Attribute werden aus diesem Argument abgeleitet, sofern sie nicht festgelegt sind: coupling_map und basis_gates.

  • 'tdg'``Nonebasis_gates (list[str] | None) – Liste der Namen der Basisgatter, in die entrollt werden soll (z. B.: ['cx', 's', 'sx', 't', 'tdg']). Wenn sowohl target als auch basis_gates sind, basis_gates wird auf alle Standard-Clifford-Gatter zusammen mit 't' und gesetzt.

  • coupling_map (CouplingMap |list | None) –

    Ein gerichteter Graph stellte eine Kopplungskarte dar. Es werden mehrere Formate unterstützt:

    1. CouplingMap Instanz
    2. Die Liste muss als Adjazenzmatrix angegeben werden, wobei jeder Eintrag alle vom Backend unterstützten gerichteten Zwei-Qubit-Wechselwirkungen angibt, z. B.: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • dt (float | None) – Angestrebte Abtastzeit (Auflösung) in Sekunden. Wenn None (Standard) und ein Ziel angegeben wird, target.dt wird verwendet.

  • initial_layout (Layout |list[int]) – Ausgangsposition der virtuellen Qubits auf den physikalischen Qubits.

  • approximation_degree (float | None) – Heuristischer Regler zur Schaltungsnäherung, wobei 1.0 keine Näherung (bis auf die numerische Toleranz) und 0.0 die maximale Näherung bedeutet. Sofern target verfügbar ist, bedeutet der Wert, None dass für eine Operation im Ziel eine Annäherung bis zur angegebenen Fehlerrate zulässig ist.

  • seed_transpiler (int | None) – Legt einen Zufallsstartwert für die stochastischen Teile des Transpilers fest. Wenn dies hier nicht angegeben ist, QISKIT_TRANSPILER_SEED kann es auch über eine Umgebungsvariable oder in einer Benutzerkonfigurationsdatei festgelegt werden. Die Prioritätsreihenfolge lautet: dieses Argument, dann die Umgebungsvariable und schließlich die Benutzerkonfigurationsoption. Wenn dieses Argument also festgelegt wird, hat es Vorrang vor den anderen Methoden zur Festlegung eines Startwerts.

  • unitary_synthesis_method (str) – Der Name der zu verwendenden einheitlichen Synthesemethode. Standardmäßig 'default' wird verwendet. Mit unitary_synthesis_plugin_names(). können Sie eine Liste der installierten Plugins anzeigen.

  • unitary_synthesis_plugin_config (dict | None) – Ein optionales Konfigurationswörterbuch, das direkt an das Plugin für die unitäre Synthese übergeben wird. Standardmäßig hat diese Einstellung keine Auswirkung, da die standardmäßige unitäre Synthesemethode keine benutzerdefinierte Konfiguration zulässt. Dies sollte nur dann erforderlich sein, wenn ein Plugin für die einheitliche Synthese mit dem unitary_synthesis_method Argument angegeben wird. Da dies für jedes Plugin zur unitären Synthese unterschiedlich ist, lesen Sie bitte in der Dokumentation des jeweiligen Plugins nach, wie diese Option verwendet wird.

  • hls_config (HLSConfig | None) – Eine optionale Konfigurationsklasse HLSConfig , die direkt an HighLevelSynthesis den Transformationsdurchlauf übergeben wird. Diese Konfigurationsklasse ermöglicht es, für verschiedene Objekte auf hoher Ebene die Listen der Synthesealgorithmen und deren Parameter festzulegen.

  • qubits_initially_zero (bool) – Gibt an, ob die Eingangsschaltung auf Null initialisiert ist.

  • rz_synthesis_config (dict | None) – Eine optionale Konfigurationsklasse, die für SynthesizeRZRotations „pass“ verwendet werden kann. Legt fest, wie RZ-Rotationen in der Schaltung synthetisiert werden sollen.

Rückgabe

Der voreingestellte Pass-Manager für die angegebenen Optionen.

Rückgabetyp

StagedPassManager

Erhöhungen

  • TranspilerError – wenn eine andere Basis als Clifford+T angegeben wird.
  • ValueError – wenn ein ungültiger Wert für optimization_level übergeben wird.
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.