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)
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
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
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
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
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
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
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
Ensembles de bases Clifford+T
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
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 « » et « » 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"]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
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)
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
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
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)
Générer un « unroll » >3q PassManager
Paramètres
- target (Target | None) –
Targetl'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.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. - 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
HighLevelSynthesispass. 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
OptimizationMetricqui 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
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
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
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)
Générer un itinéraire PassManager
Paramètres
- routing_pass (TransformationPass) – Le passage qui assurera l'acheminement
- target (Target) –
Targetl'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
Noneou0, 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
VF2PostLayoutet il est vivement recommandé d'utiliser la valeur par défaut de-1(c'est-à-dire aucune randomisation). Si une valeur est fournie,Nonecelle-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
VF2PostLayoutla 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éTrivialLayouten 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
BarrierBeforeFinalMeasurementspasse du transpileur sera exécutée avant la passe spécifiée dans l'argumentrouting_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
Noneou0, la mise en page de vf2 ne sera pas exécutée.
Retours
Le gestionnaire de la passe de routage
Type de retour
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
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.
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) –
Targetl'objet représentant le backend - coupling_map (CouplingMap) – La carte de couplage à utiliser
- remove_reset_in_zero (bool) – Si
Trueinclut 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
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)
Générer une translation de base PassManager
Paramètres
- target (Target | None) –
Targetl'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.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. - 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
HighLevelSynthesispass. 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
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)
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) –
TargetL'objet représentant le backend
Retours
Le gestionnaire du laissez-passer d'ordonnancement
Type de retour
Augmentations
TranspilerError - Si le kwarg scheduling_method n'est pas une valeur valide