Skip to main content
IBM Quantum Platform

ConstrainedReschedule

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

GitHub

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/════════════════════════╩═
                             0

Observe 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/════════════════════════╩═
                             0

Notas

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 Target que representa o backend de destino; se target for especificado, esse argumento terá precedência e acquire_alignment e pulse_alignment serã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)

GitHub

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

name()

GitHub

Nome do passe.

Tipo de retorno

str

run

run(dag)

GitHub

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:

  1. 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_back executa as etapas 2 e 3.

  2. 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.

  3. 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.

  4. 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)

GitHub

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

PassManagerState

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.