Skip to main content
IBM Quantum Platform

Gestionnaires de mots de passe prédéfinis

qiskit.transpiler.preset_passmanagers

Ce module contient des fonctions permettant de générer les gestionnaires de passes prédéfinis pour le transpileur. Les gestionnaires de passes prédéfinis sont des instances de StagedPassManager qui servent à exécuter les transformations de circuit dans le cadre du compilateur de Qiskit, au sein de transpile() la fonction aux différents niveaux d’optimisation, mais qui peuvent également être utilisés de manière autonome. Cette fonctionnalité se divise en deux parties. Le premier regroupe les fonctions utilisées pour générer l'intégralité du gestionnaire de passes, qui est utilisé par transpile() ( Génération de gestionnaires de passes prédéfinis de bas niveau ), tandis que le second regroupe les fonctions servant à construire (en totalité ou en partie) les étapes qui composent les gestionnaires de passes prédéfinis ( Fonctions de génération d'étapes ).


Génération d'un gestionnaire de passes prédéfini de bas niveau

Ensembles de bases continues

level_0_pass_manager

qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)

GitHub

Gestionnaire de passe de niveau 0 : pas d'optimisation explicite autre que le mappage vers le backend.

Ce gestionnaire de passe applique la disposition initiale définie par l'utilisateur. Si aucun n'est donné, une disposition triviale consistant à faire correspondre le i-ième qubit virtuel au i-ième qubit physique est utilisée. Tout qubit physique inutilisé est alloué comme espace d'ancilla.

Le gestionnaire de passe déroule ensuite le circuit jusqu'à la base souhaitée et transforme le circuit pour qu'il corresponde à la carte de couplage.

Paramètres

pass_manager_config (PassManagerConfig) – configuration du gestionnaire de mots de passe.

Retours

un gestionnaire de niveau 0.

Augmentations

TranspilerError - si la configuration du gestionnaire de passe n'est pas valide.

Type de retour

StagedPassManager

level_1_pass_manager

qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)

GitHub

Gestionnaire de passage de niveau 1 : optimisation de la lumière par simple effondrement des portes adjacentes.

Ce gestionnaire de passe applique la disposition initiale définie par l'utilisateur. Si aucun n'est donné et qu'une disposition triviale (i-ème virtuel -> i-ème physique) permet au circuit de correspondre à la carte de couplage, c'est celle-ci qui est utilisée. Dans le cas contraire, le circuit est mappé sur le sous-graphe de couplage le plus dense, et des échanges sont insérés pour mapper le circuit. Tout qubit physique inutilisé est alloué comme espace d'ancilla. Le gestionnaire de passe déroule ensuite le circuit jusqu'à la base souhaitée et transforme le circuit pour qu'il corresponde à la carte de couplage. Enfin, des optimisations sont réalisées sous la forme d'une réduction du nombre de portes adjacentes et d'une suppression des réinitialisations redondantes.

Paramètres

pass_manager_config (PassManagerConfig) – configuration du gestionnaire de mots de passe.

Retours

un gestionnaire de niveau 1.

Augmentations

TranspilerError - si la configuration du gestionnaire de passe n'est pas valide.

Type de retour

StagedPassManager

level_2_pass_manager

qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)

GitHub

Gestionnaire de passage de niveau 2 : optimisation moyenne par la sélection de la disposition initiale et l'annulation des portes à l'aide de règles de commutativité.

Ce gestionnaire de passe applique la disposition initiale définie par l'utilisateur. Si aucune n'est donnée, une recherche d'une disposition parfaite (c'est-à-dire une disposition qui satisfait toutes les interactions à 2 qubits) est effectuée. Si aucune disposition de ce type n'est trouvée, les qubits sont disposés sur le sous-ensemble le plus densément connecté qui présente également les meilleures fidélités de porte.

Le gestionnaire de passage transforme alors le circuit pour qu'il corresponde aux contraintes de couplage. Il est ensuite déroulé jusqu'à la base, et toutes les directions cx inversées sont fixées. Enfin, des optimisations sous forme d'annulation de portes commutatives et de suppression des réinitialisations redondantes sont effectuées.

Paramètres

pass_manager_config (PassManagerConfig) – configuration du gestionnaire de mots de passe.

Retours

un gestionnaire de niveau 2.

Augmentations

TranspilerError - si la configuration du gestionnaire de passe n'est pas valide.

Type de retour

StagedPassManager

level_3_pass_manager

qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)

GitHub

Gestionnaire de passage de niveau 3 : optimisation lourde par mappage de qubit adaptatif au bruit et annulation de porte en utilisant les règles de commutativité et la synthèse unitaire.

Ce gestionnaire de passe applique la disposition initiale définie par l'utilisateur. Si aucune n'est donnée, une recherche d'une disposition parfaite (c'est-à-dire une disposition qui satisfait toutes les interactions à 2 qubits) est effectuée. Si aucune disposition de ce type n'est trouvée et que des informations sur l'étalonnage du dispositif sont disponibles, le circuit est mappé sur les qubits présentant les meilleures lectures et sur les portes CX présentant la plus grande fidélité.

Le gestionnaire de passage transforme alors le circuit pour qu'il corresponde aux contraintes de couplage. Il est ensuite déroulé jusqu'à la base, et toutes les directions cx inversées sont fixées. Enfin, des optimisations sous forme d'annulation de portes commutatives, de resynthèse de blocs unitaires à deux qubits, de suppression des réinitialisations redondantes et d'améliorations finales de l'agencement sont réalisées.

Paramètres

pass_manager_config (PassManagerConfig) – configuration du gestionnaire de mots de passe.

Retours

un gestionnaire de niveau 3.

Augmentations

TranspilerError - si la configuration du gestionnaire de passe n'est pas valide.

Type de retour

StagedPassManager

Ensembles de bases Clifford+T

clifford_t_pass_manager

qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)

GitHub

Générer un gestionnaire de passes par étapes pour la transcompilation en base Clifford+T.

Cette fonction est appelée lorsque generate_preset_pass_manager() la base cible est constituée de portes Clifford+T. Il génère un pipeline de transpilation spécialisé comprenant les étapes suivantes :

  • Initialisation : décomposer les portes complexes en portes à 1 et 2 qubits, puis effectuer des optimisations logiques.
  • Mise en page : appliquer la stratégie de mise en page par défaut utilisée pour les ensembles de bases continus.
  • Routage : appliquer la stratégie de routage par défaut utilisée pour les ensembles de bases continus.
  • Traduction RZ : Traduire le circuit en base Clifford+RZ.
  • Optimisation RZ : optimiser le circuit dans la base Clifford+RZ.
  • Traduction : Traduire le circuit dans la base de Clifford+T.
  • Optimisation T : optimise le circuit dans la base Clifford+T.
  • Planification : appliquer la stratégie de planification par défaut utilisée pour les ensembles de bases continus.

Pour obtenir les meilleurs résultats, pensez à inclure à la fois les portes « TT » et « TT^\dagger » dans la base Clifford+T spécifiée, ainsi qu’autant de portes Clifford que possible. Par exemple :

basis_gates = get_clifford_gate_names() + ["t", "tdg"]
Remarque

Ces étapes sont encore à l'état expérimental et susceptibles d'évoluer. En particulier, ils ne sont pas encore disponibles en tant que plugins de l'étape de transpilage (contrairement aux étapes relatives aux ensembles de bases continues).

Paramètres

  • pass_manager_config (PassManagerCliffordTConfig) – Configuration du gestionnaire de laissez-passer.
  • optimization_level (int) – Le niveau d'optimisation. Si aucun niveau n'est spécifié, le niveau d'optimisation 2 est utilisé par défaut. 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 plus long.

Retours

Gestionnaire de passes par étapes.

Augmentations

TranspilerError - si la configuration du gestionnaire de passe n'est pas valide.

Type de retour

StagedPassManager


Fonctions du générateur de scène

generate_control_flow_options_check

qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)

GitHub

Générer un gestionnaire de passes qui, lorsqu'il est exécuté sur un DAG contenant un flux de contrôle, échoue avec un message d'erreur expliquant les options non valides et ce qui pourrait être utilisé à la place.

Retours

un gestionnaire de passes qui remplit les propriétés contains_x pour chacune des opérations de flux de contrôle, et lève une erreur si l'une des options données ne prend pas en charge le flux de contrôle, mais qu'un circuit avec flux de contrôle est donné.

Type de retour

PassManager

generate_error_on_control_flow

qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)

GitHub

Obtenir un gestionnaire de passage qui lève toujours une erreur si un flux de contrôle est présent dans un circuit donné.

generate_unroll_3q

qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)

GitHub

Générer un « unroll » >3q PassManager

Paramètres

  • target (Target | None) – Target l'objet représentant le backend
  • basis_gates (list[str] | None) – Liste des noms de portes « str » qui correspondent aux portes de base sur la cible du backend.
  • 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.
  • unitary_synthesis_method (str) – La méthode de synthèse unitaire à utiliser. Vous pouvez consulter la liste des plugins installés à l'aide de unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – La configuration du plugin de dictionnaire (en option) dépend du plugin concerné; veuillez vous reporter à la documentation du plugin en question pour connaître son mode d'emploi.
  • hls_config (HLSConfig | None) – Une classe de configuration facultative à utiliser pour HighLevelSynthesis pass. Précise comment synthétiser divers objets de haut niveau.
  • qubits_initially_zero (bool) – Indique si le circuit d'entrée est initialisé à zéro.
  • optimization_metric (OptimizationMetric) – l'objet OptimizationMetric qui définit la métrique utilisée lors de l'optimisation du dépliage.

Retours

Le dérouleur 3q ou plus gestionnaire de passe

Type de retour

PassManager

generate_embed_passmanager

qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)

GitHub

Générer une intégration de mise en page PassManager

Cela sert à générer un PassManager objet permettant de développer et d'appliquer une disposition initiale à un circuit

Paramètres

coupling_map (Union[CouplingMap, Target]) – La carte de couplage permettant au backend d'intégrer le circuit.

Retours

Le passmanager d'intégration qui prend en charge la propriété de mise en page

a été fixé au cours des étapes précédentes

Type de retour

PassManager

generate_routing_passmanager

qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)

GitHub

Générer un itinéraire PassManager

Paramètres

  • routing_pass (TransformationPass) – Le passage qui assurera l'acheminement
  • target (Target) – Target l'objet représentant le backend
  • coupling_map (CouplingMap) – La carte de mise en correspondance du backend vers la route pour
  • vf2_call_limit (int) – La limite d'appel interne pour la passe d'accès à vf2. S'il s'agit de None ou 0 , la mise en page de vf2 ne sera pas exécutée.
  • seed_transpiler (int) – Définit une graine aléatoire pour les parties stochastiques du transpileur. Cette option n'est actuellement utilisée que pour VF2PostLayout et il est vivement recommandé d'utiliser la valeur par défaut de -1 (c'est-à-dire aucune randomisation). Si une valeur est fournie, None celle-ci servira de graine à partir de l'entropie du système.
  • check_trivial (bool) – Si cette option est définie sur « true », l'exécution de VF2PostLayout la passe après le routage dépendra du fait qu'une configuration triviale ait été essayée et qu'elle se soit avérée imparfaite. Cela n'est nécessaire que si le gestionnaire de passes créé est exécuté TrivialLayout en tant que première tentative de disposition et l'utilise s'il s'agit d'une disposition parfaite (comme c'est le cas avec le gestionnaire de passes préréglé de niveau 1).
  • use_barrier_before_measurement (bool) – Si cette option est activée (valeur par défaut), la BarrierBeforeFinalMeasurements passe du transpileur sera exécutée avant la passe spécifiée dans l'argument routing_pass .
  • vf2_max_trials (int) – Le nombre maximum d'essais à exécuter VF2 lors de l'évaluation de la passe de post-mise en page vf2. S'il s'agit de None ou 0 , la mise en page de vf2 ne sera pas exécutée.

Retours

Le gestionnaire de la passe de routage

Type de retour

PassManager

generate_pre_op_passmanager

qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)

GitHub

Générer une boucle de pré-optimisation PassManager

Ce gestionnaire de passe vérifiera que la directionnalité de la carte de couplage est respectée.

Déclassé depuis la version 2.0

La fonction qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() est obsolète depuis Qiskit 2.0. Elle sera supprimée à Qiskit 3.0. Les plugins de traduction sont désormais tenus de respecter la directionnalité de l'ISA, de sorte qu'aucun remplacement n'est généralement nécessaire.

Paramètres

  • target (Target) – Target l'objet représentant le backend
  • coupling_map (CouplingMap) – La carte de couplage à utiliser
  • remove_reset_in_zero (bool) – Si True inclut la suppression de la réinitialisation dans le passage à zéro dans la version générée de la PassManager

Retours

Le gestionnaire de laissez-passer

Type de retour

PassManager

generate_translation_passmanager

qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)

GitHub

Générer une translation de base PassManager

Paramètres

  • target (Target | None) – Target l'objet représentant le backend
  • basis_gates (list[str] | None) – Liste des noms de portes « str » correspondant aux portes de base sur la cible du backend
  • method (str) – La méthode de traduction de base à utiliser
  • 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.
  • coupling_map (CouplingMap | None) – la carte de couplage du backend dans le cas où la synthèse est effectuée sur un circuit physique. La directionnalité de la carte de couplage sera prise en compte si pulse_optimize est défini sur True/None et si natural_direction est défini sur True/None.
  • unitary_synthesis_method (str) – La méthode de synthèse unitaire à utiliser. Vous pouvez consulter la liste des plugins installés à l'aide de unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – La configuration du plugin de dictionnaire (en option) dépend du plugin concerné; veuillez vous reporter à la documentation du plugin en question pour connaître son mode d'emploi.
  • hls_config (HLSConfig | None) – Une classe de configuration facultative à utiliser pour HighLevelSynthesis pass. Précise comment synthétiser divers objets de haut niveau.
  • qubits_initially_zero (bool) – Indique si le circuit d'entrée est initialisé à zéro.

Retours

Le gestionnaire du laissez-passer de traduction de base

Type de retour

PassManager

Augmentations

TranspilerError - Si le kwarg method n'est pas une valeur valide

generate_scheduling

qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)

GitHub

Générer un calendrier d'optimisation a posteriori PassManager

Paramètres

  • instruction_durations (dict) – Le dictionnaire des durées d'instruction
  • scheduling_method (str) – La méthode de programmation à utiliser peut être 'asap'/'as_soon_as_possible' ou 'alap'/'as_late_as_possible'
  • timing_constraints (TimingConstraints) – Restrictions de l'alignement temporel du matériel.
  • target (Target) – Target L'objet représentant le backend

Retours

Le gestionnaire du laissez-passer d'ordonnancement

Type de retour

PassManager

Augmentations

TranspilerError - Si le kwarg scheduling_method n'est pas une valeur valide

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