OptimizeAnnotated
class qiskit.transpiler.passes.OptimizeAnnotated(*args, **kwargs)
Bases : TransformationPass
Passe d'optimisation sur les circuits avec opérations annotées.
Mise en œuvre d'optimisations :
- Pour chaque opération annotée, convertir la liste de ses modificateurs en une forme canonique. Par exemple, l'application consécutive de
inverse(),control(2)etinverse()équivaut à l'application decontrol(2). - Supprimer les annotations lorsque cela est possible. Par exemple,
AnnotatedOperation(SwapGate(), [InverseModifier(), InverseModifier()])est équivalent àSwapGate(). - Combinaison récursive d'annotations. Par exemple, si
g1 = AnnotatedOperation(SwapGate(), InverseModifier())etg2 = AnnotatedOperation(g1, ControlModifier(2)),g2peut être remplacé parAnnotatedOperation(SwapGate(), [InverseModifier(), ControlModifier(2)]). - Applique la réduction conjuguée aux opérations annotées. Par exemple,
control - [P -- Q -- P^{-1}]peut être réécrit commeP -- control - [Q] -- P^{-1}, c'est-à-dire que seule la partie centrale doit être contrôlée. Cela fonctionne également pour les modificateurs inverses et les modificateurs de puissance.
OptimizeAnnotated initialisateur.
Paramètres
- cible – la cible du backend à utiliser pour ce passage.
- equivalence_library - La bibliothèque d'équivalence utilisée (les instructions de cette bibliothèque ne seront pas optimisées par cette passe).
- basis_gates – noms des bases cibles vers lesquelles effectuer le dépliage, par exemple [‘u3’, « cx »] (les instructions de cette liste ne seront pas optimisées lors de ce passage). Ignoré si
targetest également spécifié. - recurse - Par défaut, lorsque
targetoubasis_gatesest spécifié, la passe descend récursivement dans les définitions de portes (et la récursion n'est pas appliquée lorsque aucun des deux n'est spécifié puisque ces objets n'ont pas besoin d'être synthétisés). En fixant cette valeur àFalse, la récursivité est exclue dans tous les cas. - do_conjugate_reduction - contrôle si la réduction de conjugaison doit être effectuée.
Attributs
is_analysis_pass
Vérifier si la passe est une passe d'analyse.
Si le passe est un AnalysisPass,, cela signifie qu'il peut analyser le DAG et écrire les résultats de cette analyse dans l'ensemble de propriétés. Les modifications sur le DAG ne sont pas autorisées par ce type de passe.
is_transformation_pass
Vérifier si le laissez-passer est un laissez-passer de transformation.
Si la passe est une TransformationPass,, cela signifie qu'elle peut manipuler le DAG, mais qu'elle ne peut pas modifier l'ensemble des propriétés (mais qu'elle peut les lire).
Méthodes
execute
execute(passmanager_ir, state, callback=None)
Exécuter la tâche d'optimisation pour l'entrée Qiskit IR.
Paramètres
- passmanager_ir (DAGCircuit) – IR Qiskit à optimiser.
- state (DAGCircuit) – État lié à l'exécution du flux de travail par le gestionnaire de passes lui-même.
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Une fonction de rappel qui est appelée à chaque exécution d'une tâche d'optimisation.
Retours
Qiskit IR optimisé et état du flux de travail.
Type de retour
name
run
run(dag)
Exécuter la passe OptimizeAnnotated sur dag.
Paramètres
dag (DAGCircuit) – entrée dag.
Retours
Sortie du dag avec optimisation des opérations de haut niveau.
Augmentations
TranspilerError – quand quelque chose tourne mal.
update_status
update_status(state, run_state)
Mettre à jour le statut du flux de travail.
Paramètres
- state (PassManagerState) – Transmettre l'état du gestionnaire à mettre à jour.
- run_state (RunState) – Statut d'achèvement de la tâche en cours.
Retours
Mise à jour de l'état du gestionnaire de passe.
Type de retour