Skip to main content
IBM Quantum Platform

OptimizeAnnotated

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

GitHub

Bases: TransformationPass

Passagem de otimização em circuitos com operações anotadas.

Otimizações implementadas:

  • Para cada operação anotada, convertendo a lista de seus modificadores em uma forma canônica. Por exemplo, aplicar consecutivamente inverse(), control(2) e inverse() é equivalente a aplicar control(2).
  • Remoção de anotações quando possível. Por exemplo, AnnotatedOperation(SwapGate(), [InverseModifier(), InverseModifier()]) é equivalente a SwapGate().
  • Combinação recursiva de anotações. Por exemplo, se g1 = AnnotatedOperation(SwapGate(), InverseModifier()) e g2 = AnnotatedOperation(g1, ControlModifier(2)), então g2 pode ser substituído por AnnotatedOperation(SwapGate(), [InverseModifier(), ControlModifier(2)]).
  • Aplica a redução de conjugado a operações anotadas. Por exemplo, control - [P -- Q -- P^{-1}] pode ser reescrito como P -- control - [Q] -- P^{-1}, ou seja, somente a parte do meio precisa ser controlada. Isso também funciona para modificadores inversos e de potência.

OptimizeAnnotated inicializador.

Parâmetros

  • target – o alvo de backend a ser usado nesta etapa.
  • equivalence_library - A biblioteca de equivalência usada (as instruções nessa biblioteca não serão otimizadas por essa passagem).
  • basis_gates – nomes das bases de destino para as quais se deve realizar o desenrolamento, por exemplo[,] ‘u3’, ‘cx’ (as instruções nesta lista não serão otimizadas nesta etapa). Será ignorado se target também for especificado.
  • recurse - Por padrão, quando target ou basis_gates é especificado, a passagem recursivamente desce para as definições de porta (e a recursão não é aplicada quando nenhum dos dois é especificado, pois esses objetos não precisam ser sintetizados). Definir esse valor como False impede a recursão em todos os casos.
  • do_conjugate_reduction - controla se a redução do conjugado deve ser executada.

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

Verificar 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

Execute o passe OptimizeAnnotated no dag.

Parâmetros

dag (DAGCircuit) – data de entrada.

Retorna

Saída dag com operações de nível superior otimizadas.

Aumentos

TranspilerError - quando algo dá errado.

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.