Skip to main content
IBM Quantum Platform

ConsolidateBlocks

class qiskit.transpiler.passes.ConsolidateBlocks(*args, **kwargs)

GitHub

Bases : TransformationPass

Remplacer chaque bloc de portes consécutives par un seul nœud unitaire.

Permettre de regrouper des séquences de portes fonctionnant sans interruption et agissant sur les mêmes qubits en un UnitaryGate nœud, afin de les resynthétiser ultérieurement en un sous-circuit potentiellement plus optimal. En règle générale, ce passage consiste à analyser les données d'entrée DAGCircuit afin d'identifier tous les blocs de deux qubits présents dans le circuit, puis à déterminer, à l'aide d'une heuristique interne, si ce bloc doit être regroupé ou UnitaryGate non. Toutefois, si ou run_list``block_list sont définis dans l'ensemble de propriétés, ce passage n'effectuera pas sa propre analyse du DAG.

Il existe deux modes de fonctionnement hérités pour cette passe, selon que ou run_list``block_list est défini dans l'ensemble de propriétés au moment de l'exécution de cette passe. UnitaryGateblock_list devrait contenir une liste de listes d'indices de nœuds, chaque liste interne représentant un ensemble de blocs susceptibles d'être regroupés en un seul. Ces blocs peuvent comporter un nombre quelconque de qubits, mais dans les gestionnaires de passes prédéfinis des versions précédentes de Qiskit, ce nombre était généralement de deux et défini par la Collect2qBlocks passe. Il existe également une étape de CollectMultiQBlocks transpilation qui définit blocks_list les blocs trouvés pour un nombre arbitraire de qubits. L'autre clé run_list de configuration est une liste de listes de « séries », qui sont des blocs d'un seul qubit à regrouper. Cela a peut-être été défini par le Collect1qRuns passage du transpileur. Cette fonctionnalité pour les « exécutions » a été en grande partie remplacée par le Optimize1qGatesDecomposition passage du transpileur, qu'il convient généralement d'utiliser à la place pour bénéficier d'une méthode plus complète et plus performante de simplification des exécutions à un seul qubit.

Cette passe lit la clé PropertySetConsolidateBlocks_qubit_map qu'il utilise pour communiquer avec les instances récursives de travailleurs pour les opérations de flux de contrôle. La clé ne doit jamais être observable dans un pipeline en contact avec l'utilisateur (elle n'est définie que dans les processus internes) PassManager (elle n'est définie que dans les instances internes de PassManager ), mais la passe peut renvoyer des résultats incorrects ou une erreur si une autre passe définit cette clé.

ConsolidateBlocks initialisateur.

Si kak_basis_gate n'est pas None , il sera utilisé comme porte de base pour la décomposition KAK. Sinon, si basis_gates n'est pas None , une porte de base sera choisie dans cette liste. Sinon, la porte de base sera CXGate.

Paramètres

  • kak_basis_gate – Porte de base pour la décomposition KAK.
  • force_consolidate – Forcer la consolidation des blocs.
  • basis_gates – Portes de base parmi lesquelles choisir une porte KAK.
  • degree_of_approximation – un nombre à virgule flottante compris entre [0.0,1.0][0.0, 1.0]. Plus la valeur est faible, plus l'approximation est précise.
  • target – L'objet cible pour le backend de compilation.

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)

GitHub

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

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nom du laissez-passer.

Type de retour

str

run

run(dag)

GitHub

Exécuter la passe ConsolidateBlocks sur dag.

Itérer sur chaque bloc et le remplacer par une unité équivalente sur les mêmes fils.

update_status

update_status(state, run_state)

GitHub

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

PassManagerState

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