OptimizeAnnotated
class qiskit.transpiler.passes.OptimizeAnnotated(*args, **kwargs)
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)einverse()é equivalente a aplicarcontrol(2). - Remoção de anotações quando possível. Por exemplo,
AnnotatedOperation(SwapGate(), [InverseModifier(), InverseModifier()])é equivalente aSwapGate(). - Combinação recursiva de anotações. Por exemplo, se
g1 = AnnotatedOperation(SwapGate(), InverseModifier())eg2 = AnnotatedOperation(g1, ControlModifier(2)), entãog2pode ser substituído porAnnotatedOperation(SwapGate(), [InverseModifier(), ControlModifier(2)]). - Aplica a redução de conjugado a operações anotadas. Por exemplo,
control - [P -- Q -- P^{-1}]pode ser reescrito comoP -- 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
targettambém for especificado. - recurse - Por padrão, quando
targetoubasis_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 comoFalseimpede 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)
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)
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)
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