StagedPassManager
class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)
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
init- Passes initiales à exécuter avant d'intégrer le circuit dans le backend.layout- Fait correspondre les qubits virtuels du circuit aux qubits physiques du backend.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.translation- Traduit les portes du circuit dans l'ensemble de portes de base du backend cible.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.scheduling- Les passes tenant compte du matériel qui programment les opérations dans le circuit.
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
PassManagerpour toutes les étapes définies dansstages. Si un argument n'est pas défini, les étapes prendront par défaut la valeurNone, 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)
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)
Dessinez le gestionnaire de passes échelonnées.
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)
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)
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)
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 executionRemarqueAttention, 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'] ...RemarqueLors 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_processesdans le fichier de configuration utilisateur et la variableQISKIT_NUM_PROCSd'environnement. Si cette option est définie sur, laNoneconfiguration 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
PropertySetpour 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'analyseTargetvous 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()
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