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)
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
StagedPassManagerfor. 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
Targetsteht für ein Kompilierungsziel. Die folgenden Attribute werden aus diesem Argument abgeleitet, sofern sie nicht festgelegt sind:coupling_mapundbasis_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 sowohltargetals auchbasis_gatessind,basis_gateswird 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:
CouplingMapInstanz- 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.dtwird 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.0keine Näherung (bis auf die numerische Toleranz) und0.0die maximale Näherung bedeutet. Soferntargetverfügbar ist, bedeutet der Wert,Nonedass 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_SEEDkann 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. Mitunitary_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_methodArgument 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 anHighLevelSynthesisden 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
Erhöhungen
- TranspilerError – wenn eine andere Basis als Clifford+T angegeben wird.
- ValueError – wenn ein ungültiger Wert für
optimization_levelübergeben wird.