ConstrainedReschedule
class qiskit.transpiler.passes.ConstrainedReschedule(*args, **kwargs)
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/════════════════════════╩═
0Si 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/════════════════════════╩═
0Note
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
Targetche rappresenta il backend di destinazione; se viene specificatotarget, questo argomento avrà la precedenza eacquire_alignmentepulse_alignmentsaranno 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)
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
run
run(dag)
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:
-
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_backesegue i passaggi 2 e 3. -
Se l'ora di inizio del nodo viola il vincolo di allineamento,
il tempo di avvio viene aumentato per soddisfare il vincolo.
-
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.
-
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)
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