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

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 StagedPassManager boucle « 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 Target correspondant à une cible de compilation. Les attributs suivants seront déduits de cet argument s'ils ne sont pas définis : coupling_map et basis_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 et basis_gates sont tous target deux égaux Noneà, basis_gates sera 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 :

    1. CouplingMap instance
    2. 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.dt est 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.0 signifie « aucune approximation » (dans les limites de la tolérance numérique) et 0.0 signifie « approximation maximale ». Si target est disponible, une valeur de None indique 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_SEED ou 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 de unitary_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 HLSConfig de configuration facultative qui sera transmise directement à HighLevelSynthesis la 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 SynthesizeRZRotations pass. 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

StagedPassManager

Augmentations

  • TranspilerError – si une base autre que Clifford+T est spécifiée.
  • ValueError – si une valeur non valide est transmise à optimization_level .
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.