Skip to main content
IBM Quantum Platform

ConstrainedReschedule

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

GitHub

Basi: AnalysisPass

Passaggio di riprogrammazione che aggiorna i tempi di avvio dei nodi per conformarsi agli allineamenti hardware.

Questo passaggio sposta gli orari di avvio dei nodi del DAG precedentemente programmati con uno dei passaggi di pianificazione, ad es. ASAPScheduleAnalysis o ALAPScheduleAnalysisin modo che l'orario di inizio di ogni istruzione soddisfi i vincoli di allineamento.

Esempi

Supponiamo di eseguire il seguente circuito su un backend con 16 dt di allineamento di acquisizione.

     ┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(100[dt]) ├┤M├
     └───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
                             0

Si noti che il ritardo di 100 dt induce un disallineamento di 4 dt alla misura. Questo passaggio aggiunge un ulteriore spostamento temporale di 12 dt al circuito di ingresso.

     ┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(112[dt]) ├┤M├
     └───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
                             0

Note

Il backend può eseguire circuiti che violano questi vincoli di allineamento. Tuttavia, è possibile ottenere risultati di misura errati a causa della fase non tracciata dovuta al disallineamento dell'istruzione.

Crea un nuovo passaggio di riprogrammazione.

I valori di allineamento dipendono dall'elettronica di controllo del processore quantistico.

Parametri

  • acquire_alignment - Numero intero che rappresenta la risoluzione temporale minima per attivare l'istruzione di acquisizione in unità di dt.
  • pulse_alignment - Numero intero che rappresenta la risoluzione temporale minima per l'attivazione dell'istruzione gate in unità di dt.
  • target - Il parametro Target che rappresenta il backend di destinazione; se viene specificato target , questo argomento avrà la precedenza e acquire_alignment e pulse_alignment saranno ignorati.

Attributi

is_analysis_pass

Controlla se il passaggio è un passaggio di analisi.

Se il passo è un AnalysisPass,, significa che il passo può analizzare il DAG e scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di passaggio non consente di modificare il DAG.

is_transformation_pass

Controlla se il passaggio è un passaggio di trasformazione.

Se il passaggio è un TransformationPass,, significa che il passaggio può manipolare il DAG, ma non può modificare il set di proprietà (ma può essere letto).


Metodi

execute

execute(passmanager_ir, state, callback=None)

GitHub

Eseguire l'attività di ottimizzazione per l'IR Qiskit in ingresso.

Parametri

  • passmanager_ir (IR) – Qiskit IR da ottimizzare.
  • state (PassManagerState) – Stato associato all'esecuzione del flusso di lavoro da parte del gestore del passaggio stesso.
  • callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione di un'attività di ottimizzazione.

Risultati

Qiskit IR ottimizzato e stato del flusso di lavoro.

Tipo di restituzione

tupla [ IR_OUT, PassManagerState ]

name

name()

GitHub

Nome del passo.

Tipo di restituzione

STR

run

run(dag)

GitHub

Eseguire il rescheduler.

Questo passaggio deve eseguire la riprogrammazione per soddisfare le esigenze:

  • Tutti i nodi di DAGOpNode (eccetto le direttive del compilatore) sono posizionati all'inizio soddisfacendo i vincoli di allineamento hardware.
  • L'ora di fine di un nodo non si sovrappone all'ora di inizio dei nodi successivi.

Ipotesi:

  • L'ordine topologico e l'ordine temporale assoluto di DAGOpNode sono coerenti.
  • Tutti i bit in qarg o carg associati al nodo si avviano in modo sincrono.
  • L'orario di avvio di qarg e carg può essere diverso a causa della latenza I/O.

In base alle configurazioni di cui sopra, il passaggio di riprogrammazione adotta la seguente strategia:

  1. I nodi vengono elaborati nell'ordine topologico, dall'inizio di

    del circuito (cioè da sinistra a destra). Per ogni nodo (comprese le direttive del compilatore), la funzione _push_node_back esegue i passaggi 2 e 3.

  2. Se l'ora di inizio del nodo viola il vincolo di allineamento,

    il tempo di avvio viene aumentato per soddisfare il vincolo.

  3. Ogni successore immediato il cui orario di inizio coincide con l'orario di fine del nodo è

    spinto all'indietro (verso l'estremità del filo). Si noti che a questo punto il successore spostato non ha bisogno di soddisfare i vincoli, ma di questo si occuperà il nodo successore stesso quando verrà elaborato.

  4. Dopo l'elaborazione di ogni nodo, tutti i vincoli di disallineamento vengono risolti,

    e non ci saranno sovrapposizioni tra i nodi.

Parametri

dag (DAGCircuit) – Circuito DAG da riprogrammare con vincoli.

Aumenti

TranspilerError – Se il circuito non è in programma.

update_status

update_status(state, run_state)

GitHub

Aggiornare lo stato del flusso di lavoro.

Parametri

  • state (PassManagerState) – Passare lo stato del gestore da aggiornare.
  • run_state (RunState) – Stato di completamento dell'attività corrente.

Risultati

Stato aggiornato del gestore dei passaggi.

Tipo di restituzione

PassManagerState

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