Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_pass_manager

qiskit.transpiler.generate_preset_pass_manager(optimization_level=2, backend=None, target=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, init_method=None, optimization_method=None, dt=None, qubits_initially_zero=True, *, _skip_target=False)

GitHub

Générer un préréglage PassManager

Cette fonction permet de générer rapidement un gestionnaire de passes prédéfini. Les gestionnaires de passes prédéfinis sont les gestionnaires de passes utilisés par défaut par la transpile() fonction. Cette fonction offre un moyen simple et pratique de créer un objet autonome PassManager qui reflète ce que la transpile() fonction construit et utilise en interne.

Les contraintes cibles pour la construction du gestionnaire de passe peuvent être spécifiées par le biais d'un Target ou d'une instance BackendV2 ou par des contraintes libres (basis_gates, coupling_map, ou dt). L'ordre de priorité des contraintes cibles est le suivant : si une entrée target est fournie, elle aura la priorité sur toute entrée backend ou sur les contraintes libres. Si une adresse backend est fournie en même temps qu'une contrainte non contraignante de la liste ci-dessus, la contrainte non contraignante aura la priorité sur la contrainte correspondante du backend. Ce comportement est résumé dans le tableau ci-dessous. La première colonne du tableau résume les contraintes potentielles fournies par l'utilisateur, et chaque cellule indique si la priorité est attribuée à cette entrée de contrainte spécifique ou à une autre entrée (cible/backend( V1 )/backend( V2 )).

Fourni par l'utilisateur
cible
backend( V2 )
portes_de_basecibleportes_de_base
carte de couplageciblecarte de couplage
dtcibledt
Remarque

Lorsque la base cible est constituée de portes Clifford+T, cette fonction construit un pipeline de transpileur Clifford+T spécialisé; voir generate_preset_clifford_t_pass_manager() pour une documentation plus détaillée. Les arguments qui ne s'appliquent qu'à la transposition en ensembles de bases continus sont ignorés dans ce flux. Par exemple, le "unitary_synthesis_method" n'est pas pris en compte lors de la synthèse d'opérateurs unitaires à un seul qubit en une séquence de type Clifford+T.

Paramètres

  • optimization_level (int) –

    Le niveau d'optimisation à générer un StagedPassManager pour. Par défaut, le niveau d'optimisation 2 est utilisé si ce paramètre n'est pas spécifié. Il peut s'agir de 0, 1, 2 ou 3. Les niveaux supérieurs génèrent des circuits potentiellement plus optimisés, au prix d'un temps de transpilation plus long :

    • 0 : pas d'optimisation
    • 1 : optimisation de la lumière
    • 2 : optimisation lourde
    • 3 : une optimisation encore plus lourde
  • backend (Backend | None) – Objet de backend facultatif pouvant servir de source pour les valeurs par défaut des paramètres basis_gates, coupling_map, et target. Si l'un de ces autres arguments est spécifié en plus de backend celui-ci, il prévaudra sur la valeur contenue dans le backend.

  • target (Target | None) – Le Target correspondant à une cible de compilation backend. 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 de portes de base vers lesquelles effectuer le dépliage (par exemple : ['u1', 'u2', 'u3', 'cx']).

  • coupling_map (CouplingMap |list | None) –

    Le graphe orienté représente une carte de couplage. Plusieurs formats sont pris en charge :

    1. CouplingMap instance
    2. Doit être donnée sous la forme d'une matrice d'adjacence, où chaque entrée spécifie toutes les interactions dirigées à deux qubits prises en charge par le backend, par exemple [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • initial_layout (Layout |list[int]) – Position initiale des qubits virtuels sur les qubits physiques.

  • layout_method (str | None) – La méthode Pass à utiliser pour choisir l'emplacement initial des qubits. TrivialLayoutLes choix valides sont 'trivial', 'dense', et 'sabre', qui représentent respectivement, DenseLayout et SabreLayout . StagedPassManagerIl peut également s'agir du nom du plugin externe à utiliser pour l'étape layout de sortie. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "layout" comme argument stage_name .

  • routing_method (str | None) – Le pass à utiliser pour acheminer les qubits sur l'architecture. BasicSwapLes choix valides sont 'basic', 'lookahead', 'sabre', et 'none' , qui représentent respectivement, LookaheadSwap, SabreSwap, et une erreur si un routage est nécessaire. StagedPassManagerIl peut également s'agir du nom du plugin externe à utiliser pour l'étape routing de sortie. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "routing" comme argument stage_name .

  • translation_method (str | None) – Méthode à utiliser pour convertir les portes en portes de base. BasisTranslator'translator'Choix valides, 'synthesis' représentant respectivement, et UnitarySynthesis . StagedPassManagerIl peut également s'agir du nom du plugin externe à utiliser pour l'étape translation de sortie. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "translation" comme argument stage_name .

  • scheduling_method (str | None) – Le passeport à utiliser pour la programmation des cours. Les choix valides sont 'alap' et 'asap'. StagedPassManagerIl peut également s'agir du nom du plugin externe à utiliser pour l'étape scheduling de sortie. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "scheduling" comme argument stage_name .

  • 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) – Le nom de la méthode de synthèse unitaire à utiliser. Par défaut, 'default' est utilisé. Vous pouvez voir la liste des plugins installés avec 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 permet pas de configuration personnalisée. 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.

  • StagedPassManagerinit_method (str | None) – Le nom du plugin à utiliser pour l'étape init de sortie. Par défaut, aucun plugin externe n'est utilisé. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "init" comme argument pour le nom de l'environnement.

  • StagedPassManageroptimization_method (str | None) – Le nom du plugin à utiliser pour l'étape optimization de sortie. Par défaut, aucun plugin externe n'est utilisé. Vous pouvez afficher la liste des plugins installés en utilisant list_stage_plugins() avec "optimization" comme argument stage_name .

  • dt (float | None) – Durée d'échantillonnage (résolution) du backend, en secondes. Si None (par défaut) et qu'un backend est fourni, backend.dt est utilisé.

  • qubits_initially_zero (bool) – Indique si le circuit d'entrée est initialisé à zéro.

Retours

Le gestionnaire de passe prédéfini pour les options données

Type de retour

StagedPassManager

Augmentations

ValueError - si une valeur invalide est transmise pour optimization_level .

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.