ConstrainedReschedule
class qiskit.transpiler.passes.ConstrainedReschedule(*args, **kwargs)
Bases: AnalysisPass
Passagem de reescalonador que atualiza os horários de início dos nós para que fiquem em conformidade com os alinhamentos de hardware.
Essa passagem muda as horas de início do nó DAG previamente agendadas com uma das passagens de agendamento, por exemplo. ASAPScheduleAnalysis ou ALAPScheduleAnalysisde modo que cada hora de início de instrução satisfaça as restrições de alinhamento.
Exemplos
Supomos a execução do seguinte circuito em um backend com 16 dt de alinhamento de aquisição.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(100[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Observe que o atraso de 100 dt induz a um desalinhamento de 4 dt na medição. Essa passagem acrescenta um deslocamento de tempo extra de 12 dt ao circuito de entrada.
┌───┐┌────────────────┐┌─┐
q_0: ┤ X ├┤ Delay(112[dt]) ├┤M├
└───┘└────────────────┘└╥┘
c: 1/════════════════════════╩═
0Notas
Seu backend pode executar circuitos que violam essas restrições de alinhamento. No entanto, você pode obter um resultado de medição incorreto devido à fase não rastreada originada no desalinhamento da instrução.
Criar nova passagem de reprogramador.
Os valores de alinhamento dependem da eletrônica de controle do seu processador quântico.
Parâmetros
- acquire_alignment - Número inteiro que representa a resolução mínima de tempo para acionar a instrução de aquisição em unidades de
dt. - pulse_alignment - Número inteiro que representa a resolução mínima de tempo para acionar a instrução de porta em unidades de
dt. - target - O
Targetque representa o backend de destino; setargetfor especificado, esse argumento terá precedência eacquire_alignmentepulse_alignmentserão ignorados.
Atributos
is_analysis_pass
Verificar se o passe é um passe de análise.
Se a passagem for um AnalysisPass,, isso significa que a passagem pode analisar o DAG e escrever os resultados dessa análise no conjunto de propriedades. As modificações no DAG não são permitidas por esse tipo de passe.
is_transformation_pass
Verifique se o passe é um passe de transformação.
Se a passagem for um TransformationPass,, isso significa que a passagem pode manipular o DAG, mas não pode modificar o conjunto de propriedades (mas pode ser lido).
Métodos
execute
execute(passmanager_ir, state, callback=None)
Executar a tarefa de otimização para a entrada Qiskit IR.
Parâmetros
- passmanager_ir (Any) – Qiskit IR para otimizar.
- state (PassManagerState) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passes.
- callback (Callable | None) – Uma função de retorno de chamada que é chamada a cada execução da tarefa de otimização.
Retorna
Qiskit IR otimizado e estado do fluxo de trabalho.
Tipo de retorno
tupla [ Any, PassManagerState ]
name
run
run(dag)
Executar o reprogramador.
Essa passagem deve executar o reescalonamento para satisfazer:
- Todos os nós do DAGOpNode (exceto as diretivas do compilador) são colocados no momento inicial, satisfazendo as restrições de alinhamento do hardware.
- A hora de término de um nó não se sobrepõe à hora de início dos nós sucessores.
Suposições:
- A ordem topológica e a ordem de tempo absoluto do site DAGOpNode são consistentes.
- Todos os bits em qargs ou cargs associados ao nó são iniciados de forma síncrona.
- O horário de início de qargs e cargs pode ser diferente devido à latência de E/S.
Com base nas configurações acima, a passagem do reprogramador adota a seguinte estratégia:
-
Os nós são processados na ordem topológica, desde o início do
o circuito (ou seja, da esquerda para a direita). Para cada nó (incluindo as diretivas do compilador), a função
_push_node_backexecuta as etapas 2 e 3. -
Se a hora de início do nó violar a restrição de alinhamento,
a hora de início é aumentada para satisfazer a restrição.
-
Cada sucessor imediato cujo start_time se sobrepõe ao end_time do nó é
empurrado para trás (em direção à extremidade do fio). Observe que, nesse momento, o sucessor deslocado não precisa satisfazer as restrições, mas isso será resolvido quando o próprio nó sucessor for processado.
-
Depois que cada nó for processado, todas as restrições de desalinhamento serão resolvidas,
e não haverá sobreposição entre os nós.
Parâmetros
dag (DAGCircuit) – Circuito DAG a ser reprogramado com restrições.
Aumentos
TranspilerError - Se o circuito não estiver programado.
update_status
update_status(state, run_state)
Atualizar o status do fluxo de trabalho.
Parâmetros
- state (PassManagerState) – Passar o estado do gerenciador para atualizar.
- run_state (RunState) – Status de conclusão da tarefa atual.
Retorna
Estado do gerenciador de passes atualizado.
Tipo de retorno