ConstrainedReschedule
class qiskit.transpiler.passes.ConstrainedReschedule(*args, **kwargs)
Bases : AnalysisPass
Passe de réordonnancement qui met à jour les heures de démarrage des nœuds pour se conformer aux alignements matériels.
Cette passe décale les heures de démarrage des nœuds du DAG précédemment programmées avec l'une des passes d'ordonnancement, par ex. ASAPScheduleAnalysis ou ALAPScheduleAnalysisde manière à ce que chaque heure de début d'instruction respecte les contraintes d'alignement.
Exemples
Nous supposons que le circuit suivant est exécuté sur un backend avec 16 dt d'alignement d'acquisition.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(100[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Notez qu'un retard de 100 dt induit un désalignement de 4 dt lors de la mesure. Ce passage ajoute un décalage temporel supplémentaire de 12 dt au circuit d'entrée.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(112[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Remarques
Votre backend peut exécuter des circuits violant ces contraintes d'alignement. Cependant, vous pouvez obtenir des résultats de mesure erronés en raison de la phase non suivie provenant du désalignement de l'instruction.
Créer un nouveau laissez-passer de rééchelonnement.
Les valeurs d'alignement dépendent de l'électronique de contrôle de votre processeur quantique.
Paramètres
- acquire_alignment - Nombre entier représentant la résolution temporelle minimale pour déclencher l'instruction d'acquisition en unités de
dt. - pulse_alignment - Nombre entier représentant la résolution temporelle minimale pour déclencher l'instruction de porte en unités de
dt. - target - L'argument
Targetreprésentant le backend cible. Sitargetest spécifié, cet argument sera prioritaire etacquire_alignmentetpulse_alignmentseront ignorés.
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 (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 ]
name
run
run(dag)
Exécuter le plan de réorganisation.
Ce passage doit effectuer un réordonnancement pour satisfaire :
- Tous les nœuds du site DAGOpNode (à l'exception des directives du compilateur) sont placés au moment du démarrage en respectant les contraintes d'alignement du matériel.
- L'heure de fin d'un nœud ne chevauche pas l'heure de début des nœuds suivants.
Hypothèses :
- L'ordre topologique et l'ordre temporel absolu de DAGOpNode sont cohérents.
- Tous les bits des qargs ou des cargs associés au nœud démarrent de manière synchrone.
- L'heure de démarrage de qargs et de cargs peut être différente en raison de la latence des entrées/sorties.
Sur la base des configurations ci-dessus, la passe de rééchelonnement adopte la stratégie suivante :
-
Les nœuds sont traités dans l'ordre topologique, à partir du début de
le circuit (c'est-à-dire de gauche à droite). Pour chaque nœud (y compris les directives du compilateur), la fonction
_push_node_backeffectue les étapes 2 et 3. -
Si l'heure de début du nœud ne respecte pas la contrainte d'alignement,
l'heure de démarrage est augmentée pour satisfaire la contrainte.
-
Chaque successeur immédiat dont l'heure de début chevauche l'heure de fin du nœud est
poussé vers l'arrière (vers l'extrémité du fil). Il convient de noter qu'à ce stade, le nœud successeur décalé n'a pas besoin de satisfaire aux contraintes, mais cela sera pris en compte lors du traitement du nœud successeur lui-même.
-
Après le traitement de chaque nœud, toutes les contraintes de désalignement seront résolues,
et il n'y aura pas de chevauchement entre les nœuds.
Paramètres
dag (DAGCircuit) – Circuit DAG à replanifier avec des contraintes.
Augmentations
TranspilerError – Si le circuit n'est pas programmé.
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