Skip to main content
IBM Quantum Platform

StagedPassManager

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

GitHub

Basi: PassManager

Una pipeline di gestione dei passaggi costruita a partire da singole fasi.

Questa classe consente di costruire una pipeline di compilazione a partire da stadi fissi. Ogni StagedPassManager definisce un elenco di fasi che vengono eseguite in un ordine fisso e ogni fase è definita come un'istanza indipendente PassManager istanza indipendente. Esistono anche pre_ e post_ per ogni fase definita. Ciò consente di comporre e sostituire facilmente diverse fasi e di aggiungere punti di aggancio per consentire modifiche programmatiche a una pipeline. Quando si utilizza uno staged pass manager non è possibile modificare i singoli pass e si possono modificare solo gli stadi.

Per impostazione predefinita, le istanze di StagedPassManager definiscono una tipica pipeline di compilazione completa da un circuito virtuale astratto a uno ottimizzato e in grado di funzionare sul backend specificato. Gli stadi predefiniti sono:

  1. init - Passaggi iniziali da eseguire prima di incorporare il circuito nel backend.
  2. layout - Mappa i qubit virtuali del circuito con i qubit fisici del backend.
  3. routing - Inserisce le porte necessarie per spostare gli stati dei qubit fino a quando il circuito può essere eseguito con il layout scelto nella mappa di accoppiamento del backend.
  4. translation - Traduce le porte del circuito nel set di porte di base del backend di destinazione.
  5. optimization - Ottimizza il circuito per ridurre il costo di esecuzione. Questi passaggi vengono eseguiti in genere in un ciclo fino al raggiungimento di un criterio di convergenza. Ad esempio, il criterio di convergenza potrebbe essere che la profondità del circuito non diminuisca nelle iterazioni successive.
  6. scheduling - Passaggi hardware-aware che programmano le operazioni nel circuito.
Nota

Per compatibilità con il passato, il posizionamento relativo di questi stadi predefiniti rimarrà stabile anche in futuro. Tuttavia, è possibile aggiungere nuovi stadi all'elenco degli stadi predefiniti tra quelli attuali. Ad esempio, in una versione futura si potrebbe aggiungere una nuova fase, qualcosa come logical_optimization, subito dopo la fase esistente init nell'elenco delle fasi predefinite. In questo modo si manterrebbe la compatibilità per gli utenti di StagedPassManager preesistenti, poiché le posizioni relative dello stage sono conservate e il comportamento non cambierà tra una release e l'altra.

Queste fasi verranno eseguite in ordine e qualsiasi fase impostata su None verrà saltata. Se una fase viene specificata più volte (cioè in posizioni relative diverse), i passaggi associati, compresi quelli pre e post, verranno eseguiti una volta per ogni dichiarazione. Se un PassManager input viene utilizzato per più di una fase (ad esempio nel caso di un Pass input che copre sia il layout che il routing), è consigliabile impostarlo sulla prima fase in sequenza che esso copre.

Inizializzare un nuovo oggetto StagedPassManager

Parametri

  • stages (Iterable[str]) – Un elenco facoltativo di fasi da utilizzare per questa istanza. Se non viene specificato, viene ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] utilizzato l'elenco predefinito delle fasi. Una volta creata, la lista finale sarà immutabile e verrà memorizzata come tupla. Se una fase viene specificata più volte (cioè in posizioni relative diverse), i passaggi associati, compresi quelli pre e post, verranno eseguiti una volta per ogni dichiarazione.
  • kwargs - I valori iniziali PassManager per qualsiasi fase definita in stages. Se un argomento non è definito, il valore predefinito degli stadi è None , che indica uno stadio vuoto o non definito.

Aumenti

  • AttributeError - Se uno stadio negli argomenti della parola chiave di input non è definito.
  • ValueError - Se viene specificato un nome di stage non valido.

Attributi

expanded_stages

Ampliamento delle fasi del Pass manager, comprese le fasi pre_ e post_ .

invalid_stage_regex

Valore predefinito: re.compile('\s|\+|\-|\*|\/|\\|\%|\{->0<-}|\@|\!|\~|\^|\&|\:|\[|\]|\\{|\\}|\(|\)')

stages

Fasi di gestione del passaggio


Metodi

append

append(passes)

GitHub

Aggiungere un set di passaggi alla pianificazione dei passaggi.

Parametri

passes (Task |list[Task]) – Una serie di passaggi del transpiler da aggiungere alla pianificazione.

Aumenti

TranspilerError – se un passaggio tra i passaggi non è un passaggio valido.

Tipo di restituzione

Nessuna

draw

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

GitHub

Disegnare il gestore del passaggio a tappe.

Avvertenza

Questa funzione richiamerà lo strumento Graphviz di sistema su un file contenente stringhe modificabili dall'utente (come i nomi dei passaggi). Si raccomanda di richiamare questa funzione solo con dati di input attendibili.

Parametri

  • filename (str) – percorso del file in cui salvare l'immagine.
  • style (dict) – Le chiavi sono le classi di pass e i valori sono i colori con cui realizzarle. Un esempio è disponibile nel file DEFAULT_STYLE. È possibile utilizzare un dizionario ordinato per garantire una colorazione in base alla priorità quando un passaggio rientra in più categorie. I valori non presenti nel dizionario fornito verranno ricavati dal dizionario predefinito.
  • raw (bool) – In tal caso True, salva il file Dot non elaborato invece dell'immagine.

remove

remove(index)

GitHub

Rimuove un particolare passaggio nello scheduler.

Parametri

index (int) – Passare l'indice da rimuovere, in base alla posizione in passes().

Aumenti

PassManagerError – Se l'indice non viene trovato.

Tipo di restituzione

Nessuna

replace

replace(index, passes)

GitHub

Sostituire un particolare passaggio nello scheduler.

Parametri

  • index (int) – Passa l'indice da sostituire, in base alla posizione in passes().
  • passes (BasePass | list[BasePass]) – Un pass da aggiungere al calendario del gestore dei pass.

Tipo di restituzione

Nessuna

run

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

GitHub

Eseguire tutti i passaggi sul sito circuits.

Parametri

  • circuits (_CircuitsT) – Circuito/i da trasformare attraverso tutti i passaggi registrati.

  • output_name (str | None) – Il nome del circuito di uscita. Se None, sarà impostato sullo stesso nome del circuito di ingresso.

  • callback (Callable | None) –

    Una funzione di callback che verrà richiamata dopo l'esecuzione di ogni passaggio. La funzione verrà chiamata con 5 argomenti di parole chiave:

    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
    Nota

    Si noti che gli argomenti delle parole chiave sono diversi da quelli utilizzati dalla generica funzione BasePassManager. Questo gestore di passaggi tradurrà questi argomenti nella forma descritta sopra.

    Gli argomenti esatti che si passano espongono gli interni del gestore di passaggi e sono soggetti a modifiche quando gli interni del gestore di passaggi cambiano. Se si intende riutilizzare una funzione di callback in più release, assicurarsi che gli argomenti passati siano gli stessi.

    Per utilizzare la funzione di callback, si definisce una funzione che accetta i dettati kwargs e accede alle variabili. Ad esempio:

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

    Quando si esegue la transpilazione con multiprocesso, la funzione di callback viene invocata nel contesto di ciascun sottoprocesso, indipendentemente dal processo padre.

  • num_processes (int | None) – Il numero massimo di processi paralleli da avviare se l'esecuzione parallela è abilitata. Questa impostazione ha la precedenza num_processes sul file di configurazione dell'utente e sulla variabile QISKIT_NUM_PROCS d'ambiente. Se impostato su verrà utilizzata None la configurazione predefinita del sistema o quella dell'utente locale.

  • property_set (dict[str, object] | None) – Se dato, il valore iniziale da usare come parametro PropertySet per la pipeline del gestore dei passaggi. Questo può essere usato per persistere l'analisi da un'esecuzione all'altra, nei casi in cui si sa che l'analisi è sicura da condividere. Attenzione: alcune analisi saranno specifiche per il circuito di ingresso e il particolare Targetquindi è necessario prestare molta attenzione quando si utilizza questo argomento.

Risultati

I circuiti trasformati.

Tipo di restituzione

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

Linearizzare questo gestore in un singolo FlowControllerLinearin modo che possa essere annidato all'interno di un altro gestore di passaggi.

Risultati

Un gestore di passaggi linearizzato.

Tipo di restituzione

FlowControllerLinear

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.