Skip to main content
IBM Quantum Platform

CollectMultiQBlocks

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

GitHub

Bases : AnalysisPass

Rassembler des séquences de portes ininterrompues agissant sur des groupes de qubits. max_block_size spécifie le nombre maximum de qubits sur lesquels peut agir un seul groupe de portes

Parcourez le DAG et trouvez des blocs de portes qui agissent consécutivement sur des groupes de qubits. Écrire les blocs à property_set sous la forme d'une liste de blocs de la forme :

[[g0, g1, g2], [g4, g5]]

Les blocs sont présentés dans un ordre topologique valide. En outre, les portes de chaque bloc sont également indiquées dans l'ordre topologique. Certaines portes peuvent ne pas être présentes dans un bloc (par exemple, si le nombre d'opérandes est supérieur à max_block_size)

Par défaut, les blocs sont collectés dans le sens des entrées vers les sorties du DAG. L'option collect_from_back permet de changer cette direction, c'est-à-dire de collecter les blocs des sorties vers les entrées. Notez que les blocs sont toujours signalés dans un ordre topologique valide.

Une structure de données Disjoint Set Union (DSU) est utilisée pour gérer les blocs au fur et à mesure du traitement des portes. Cette structure de données fait pointer chaque qubit vers un ensemble à tout moment et les ensembles correspondent aux blocs actuels. Ceux-ci évoluent au fil du temps et la structure des données permet d'effectuer ces changements rapidement.


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 (IR) – IR Qiskit à optimiser.
  • state (PassManagerState) – État associé à l'exécution du flux de travail par le gestionnaire de passe lui-même.
  • callback (Callable[[Task, IR_OUT, 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 [ IR_OUT, PassManagerState ]

find_set

find_set(index)

GitHub

Fonction DSU pour trouver la racine d'un ensemble d'éléments Si mon parent est moi-même, je suis la racine. Sinon, nous trouvons récursivement la racine de mon parent. Ensuite, nous attribuons à mon parent la fonction de racine, ce qui permet d'éviter la récursivité à l'avenir.

name

name()

GitHub

Nom du laissez-passer.

Type de retour

str

run

run(dag)

GitHub

Exécuter la passe CollectMultiQBlocks sur dag.

Les blocs contiennent des nœuds "op" dans un ordre de tri topologique, de sorte que toutes les portes d'un bloc agissent sur le même ensemble de qubits et sont adjacentes dans le circuit.

Les blocs sont construits en examinant les prédécesseurs et les successeurs des portes "cx" dans le circuit. u1, u2, u3, cx, id seront inclus.

Après l'exécution, property_set['block_list'] est défini comme une liste de tuples d'objets DAGNode

union_set

union_set(set1, set2)

GitHub

Fonction DSU permettant de fusionner deux ensembles. Déterminez les racines de chaque ensemble. Définissez ensuite l'un comme parent de l'autre, afin de relier les ensembles. Fusionne l'ensemble le plus petit avec l'ensemble le plus grand afin d'optimiser les performances d'exécution

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.