Skip to main content
IBM Quantum Platform

StagedPassManager

class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)

GitHub

Bases : PassManager

Un pipeline de gestionnaires de passage construit à partir d'étapes individuelles.

Cette classe permet de construire un pipeline de compilation à partir d'étapes fixes. Chaque site StagedPassManager définit une liste d'étapes qui sont exécutées dans un ordre fixe, et chaque étape est définie comme une instance autonome PassManager autonome. Il existe également des étapes pre_ et post_ pour chaque étape définie. Cela permet de composer et de remplacer facilement différentes étapes et d'ajouter des points d'accroche pour permettre des modifications programmatiques d'un pipeline. Lorsque vous utilisez un gestionnaire de laissez-passer par étapes, vous ne pouvez pas modifier les laissez-passer individuels et vous ne pouvez modifier que les étapes.

Par défaut, les instances de StagedPassManager définissent un pipeline de compilation complet typique à partir d'un circuit virtuel abstrait vers un circuit optimisé et capable de fonctionner sur le backend spécifié. Les étapes prédéfinies par défaut sont les suivantes

  1. init - Passes initiales à exécuter avant d'intégrer le circuit dans le backend.
  2. layout - Fait correspondre les qubits virtuels du circuit aux qubits physiques du backend.
  3. routing - Insère les portes nécessaires pour déplacer les états des qubits jusqu'à ce que le circuit puisse être exécuté avec la disposition choisie sur la carte de couplage du backend.
  4. translation - Traduit les portes du circuit dans l'ensemble de portes de base du backend cible.
  5. optimization - Optimise le circuit pour réduire le coût de son exécution. Ces passes tournent généralement en boucle jusqu'à ce qu'un critère de convergence soit atteint. Par exemple, le critère de convergence peut être que la profondeur du circuit ne diminue pas au cours des itérations successives.
  6. scheduling - Les passes tenant compte du matériel qui programment les opérations dans le circuit.
Remarque

Pour des raisons de compatibilité ascendante, le positionnement relatif de ces étapes par défaut restera stable à l'avenir. Toutefois, de nouvelles étapes peuvent être ajoutées à la liste des étapes par défaut entre les étapes actuelles. Par exemple, dans une prochaine version, une nouvelle phase, quelque chose comme logical_optimization, pourrait être ajoutée immédiatement après la phase existante init dans la liste des phases par défaut. Cela permet de préserver la compatibilité pour les utilisateurs de StagedPassManager , étant donné que les positions relatives de la scène sont préservées et que le comportement ne changera pas d'une version à l'autre.

Ces étapes seront exécutées dans l'ordre, et toute étape définie sur None sera ignorée. Si une étape est définie plusieurs fois (c'est-à-dire à différentes positions relatives), les passes associées, y compris les passes pré et post, s'exécuteront une fois par déclaration. Si une PassManager entrée est utilisée pour plusieurs étapes (par exemple, dans le cas d'une Pass entrée qui couvre à la fois la mise en page et le routage), il est recommandé de la définir sur la première étape de la séquence qu'elle couvre.

Initialisation d'un nouvel objet StagedPassManager

Paramètres

  • stages (Iterable[str]) – Une liste facultative d'étapes à utiliser pour cette instance. Si cela n'est pas précisé, la liste des étapes ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] par défaut est utilisée. Une fois instanciée, la liste finale sera immuable et stockée sous forme de tuple. Si une étape est définie plusieurs fois (c'est-à-dire à différentes positions relatives), les passes associées, y compris les passes pré et post, s'exécuteront une fois par déclaration.
  • kwargs - Les valeurs PassManager pour toutes les étapes définies dans stages. Si un argument n'est pas défini, les étapes prendront par défaut la valeur None , ce qui indique une étape vide/non définie.

Augmentations

  • AttributeError - Si une étape dans les arguments du mot-clé d'entrée n'est pas définie.
  • ValueError - Si un nom d'étape non valide est spécifié.

Attributs

expanded_stages

Les étapes du gestionnaire de passe ont été élargies et comprennent les phases pre_ et post_ .

invalid_stage_regex

Valeur par défaut : re.compile('\s|\+|\-|\*|\/|\\|\%|\{->0<-}|\@|\!|\~|\^|\&|\:|\[|\]|\\{|\\}|\(|\)')

stages

Franchir les étapes de la gestion


Méthodes

append

append(passes)

GitHub

Ajouter un jeu de passes à la liste des passes.

Paramètres

passes (Task |list[Task]) – Un ensemble de passes de transpileur à ajouter au planning.

Augmentations

TranspilerError – si une passe parmi les passes n'est pas une passe valable.

Type de retour

Aucun

draw

draw(filename=None, style=None, raw=False)

GitHub

Dessinez le gestionnaire de passes échelonnées.

Avertissement

Cette fonction lancera l'outil Graphviz du système sur un fichier contenant des chaînes de caractères définies par l'utilisateur (telles que les noms de passages). Il est recommandé de n'appeler cette fonction qu'avec des données fiables.

Paramètres

  • filename (str) – chemin d'accès au fichier dans lequel enregistrer l'image.
  • style (dict) – Les clés correspondent aux classes de motifs et les valeurs aux couleurs à utiliser pour les créer. On peut en voir un exemple dans le fichier DEFAULT_STYLE. Un dictionnaire trié peut être utilisé pour garantir un classement par priorité lorsque un élément appartient à plusieurs catégories. Toute valeur ne figurant pas dans le dictionnaire fourni sera renseignée à partir du dictionnaire par défaut.
  • raw (bool) – Si c'est le cas True, enregistrez le fichier Dot brut plutôt que l'image.

remove

remove(index)

GitHub

Supprime un passage particulier dans l'ordonnanceur.

Paramètres

index (int) – Indiquez l'index de l'élément à supprimer, en fonction de sa position dans passes().

Augmentations

PassManagerError – Si l'index n'est pas trouvé.

Type de retour

Aucun

replace

replace(index, passes)

GitHub

Remplacer une passe particulière dans l'ordonnanceur.

Paramètres

  • index (int) – Indice de passage à remplacer, basé sur la position dans passes().
  • passes (BasePass | list[BasePass]) – Un forfait devant être ajouté au calendrier du gestionnaire de forfaits.

Type de retour

Aucun

run

run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)

GitHub

Effectuer toutes les passes sur le site circuits spécifié.

Paramètres

  • circuits (_CircuitsT) – Circuit(s) à transformer via toutes les passes enregistrées.

  • output_name (str | None) – Le nom du circuit de sortie. Si None, il sera réglé sur le même nom que celui du circuit d'entrée.

  • callback (Callable | None) –

    Une fonction de rappel qui sera appelée après chaque exécution de passe. La fonction sera appelée avec 5 arguments de type mot-clé :

    pass_ (Pass): the pass being run
    dag (DAGCircuit): the dag output of the pass
    time (float): the time to execute the pass
    property_set (PropertySet): the property set
    count (int): the index for the pass execution
    Remarque

    Attention, les arguments des mots-clés sont différents de ceux utilisés par la commande générique BasePassManager. Ce gestionnaire de passe traduira ces arguments dans la forme décrite ci-dessus.

    Les arguments exacts transmis exposent les éléments internes du gestionnaire de passe et sont susceptibles d'être modifiés en fonction de l'évolution des éléments internes du gestionnaire de passe. Si vous avez l'intention de réutiliser une fonction de rappel sur plusieurs versions, assurez-vous que les arguments transmis sont les mêmes.

    Pour utiliser la fonction de rappel, vous définissez une fonction qui prend en charge les kwargs dict et accède aux variables. Par exemple :

    def callback_func(**kwargs):
        pass_ = kwargs['pass_']
        dag = kwargs['dag']
        time = kwargs['time']
        property_set = kwargs['property_set']
        count = kwargs['count']
        ...
    Remarque

    Lors de l'exécution de la transpilation en mode multiprocessus, la fonction de rappel est invoquée dans le contexte de chaque sous-processus, indépendamment du processus parent.

  • num_processes (int | None) – Nombre maximal de processus parallèles à lancer si l'exécution parallèle est activée. Cet argument remplace num_processes dans le fichier de configuration utilisateur et la variable QISKIT_NUM_PROCS d'environnement. Si cette option est définie sur, la None configuration par défaut du système ou la configuration utilisateur locale sera utilisée.

  • property_set (dict[str, object] | None) – Si elle est donnée, la valeur initiale à utiliser en tant que PropertySet pour le pipeline du gestionnaire de passe. Cette fonction peut être utilisée pour conserver une analyse d'un cycle à l'autre, dans les cas où l'on sait que l'analyse peut être partagée en toute sécurité. Attention, certaines analyses seront spécifiques au circuit d'entrée et à l'élément particulier de l'analyse Targetvous devez donc faire preuve de beaucoup de prudence lorsque vous utilisez cet argument.

Retours

Le(s) circuit(s) transformé(s).

Type de retour

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

Linéariser ce gestionnaire en un seul FlowControllerLinearafin qu'il puisse être imbriqué dans un autre gestionnaire de passe.

Retours

Un gestionnaire de passes linéarisé.

Type de retour

FlowControllerLinear

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