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)
StagedPassManagerGénérer un préréglage Clifford+T.
Cette fonction offre un moyen pratique de créer un gestionnaire de passes prédéfini pour la compilation Clifford+T. Nous recommandons d'utiliser cette fonction plutôt que transpile() ou generate_preset_pass_manager() avec une base Clifford+T, car elle met à disposition des arguments spécialement adaptés aux compilations Clifford+T.
Les contraintes cibles pour la construction du gestionnaire de passes peuvent être spécifiées via une Target instance, ou via des contraintes souples (basis_gates, coupling_map, ou dt).
Si les portes de base ne sont pas spécifiées (ni via target ni via basis_gates), elles sont alors définies par défaut sur l'ensemble des portes Clifford+T disponibles dans Qiskit. Notez toutefois que si des portes de base sont spécifiées mais qu'elles ne constituent pas une base de Clifford+T, une erreur sera générée.
Exemples
Créer et utiliser un gestionnaire de passes Clifford+T simple :
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)Diverses options sont configurables; consultez la documentation relative aux arguments pour plus de détails :
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,
)Paramètres
-
optimization_level (int) – Le niveau d'optimisation pour générer une
StagedPassManagerboucle « for ». Par défaut, le niveau d'optimisation 2 est utilisé si aucun autre niveau n'est spécifié. Ce nombre peut être 0, 1, 2 ou 3. Des niveaux plus élevés permettent d'obtenir des circuits potentiellement plus optimisés, au prix d'un temps de transpilation potentiellement plus long. -
target (Target | None) – Le
Targetcorrespondant à une cible de compilation. Les attributs suivants seront déduits de cet argument s'ils ne sont pas définis :coupling_mapetbasis_gates. -
basis_gates (list[str] | None) – Liste des noms des portes de base vers lesquelles effectuer le dépliage (par exemple :
['cx', 's', 'sx', 't', 'tdg']). Si etbasis_gatessont toustargetdeux égauxNoneà,basis_gatessera défini comme l'ensemble des portes de Clifford standard, ainsi que't'et'tdg'. -
coupling_map (CouplingMap |list | None) –
Le graphe orienté représentait une carte de couplage. Plusieurs formats sont pris en charge :
CouplingMapinstance- La liste doit être fournie sous la forme d'une matrice d'adjacence, dans laquelle chaque élément spécifie toutes les interactions orientées entre deux qubits prises en charge par le backend, par exemple :
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
dt (float | None) – Durée d'échantillonnage cible (résolution) en secondes. Si
None(par défaut) et qu'une cible est fournie,target.dtest utilisé. -
initial_layout (Layout |list[int]) – Position initiale des qubits virtuels sur les qubits physiques.
-
approximation_degree (float | None) – Curseur heuristique utilisé pour l'approximation des circuits, où
1.0signifie « aucune approximation » (dans les limites de la tolérance numérique) et0.0signifie « approximation maximale ». Sitargetest disponible, une valeur deNoneindique qu’une approximation est autorisée dans la limite du taux d’erreur indiqué pour une opération dans la cible. -
seed_transpiler (int | None) – Définit une graine aléatoire pour les parties stochastiques du transpileur. Si cela n'est pas spécifié ici, cela peut également être défini via une variable d'environnement :
QISKIT_TRANSPILER_SEEDou dans un fichier de configuration utilisateur. L'ordre de priorité est le suivant : cet argument, puis la variable d'environnement, et enfin l'option de configuration de l'utilisateur. Ainsi, la définition de cet argument prévaudra sur les autres méthodes de définition d'une valeur de départ. -
unitary_synthesis_method (str) – Nom de la méthode de synthèse unitaire à utiliser. Par défaut
'default', on utilise. Vous pouvez consulter la liste des plugins installés à l'aide deunitary_synthesis_plugin_names(). -
unitary_synthesis_plugin_config (dict | None) – Un dictionnaire de configuration facultatif qui sera transmis directement au plugin de synthèse unitaire. Par défaut, ce paramètre n'aura aucun effet, car la méthode de synthèse unitaire par défaut ne prend pas en charge les configurations personnalisées. Cela ne devrait être nécessaire que lorsqu'un plugin de synthèse unitaire est spécifié avec l'argument
unitary_synthesis_method. Comme cette option varie selon chaque plugin de synthèse unitaire, veuillez consulter la documentation du plugin concerné pour savoir comment l'utiliser. -
hls_config (HLSConfig | None) – Une classe
HLSConfigde configuration facultative qui sera transmise directement àHighLevelSynthesisla phase de transformation. Cette classe de configuration permet de définir, pour divers objets de haut niveau, les listes d'algorithmes de synthèse et leurs paramètres. -
qubits_initially_zero (bool) – Indique si le circuit d'entrée est initialisé à zéro.
-
rz_synthesis_config (dict | None) – Une classe de configuration facultative à utiliser pour
SynthesizeRZRotationspass. Spécifie comment synthétiser les rotations RZ dans le circuit.
Retours
Le gestionnaire de passes prédéfini pour les options indiquées.
Type de retour
Augmentations
- TranspilerError – si une base autre que Clifford+T est spécifiée.
- ValueError – si une valeur non valide est transmise à
optimization_level.