Skip to main content
IBM Quantum Platform

RemoveIdentityEquivalent

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

GitHub

Bases: TransformationPass

Remova os portões com efeitos insignificantes.

Remove portas cujo efeito está próximo de uma operação de identidade até uma fase global e até a tolerância especificada. As portas parametrizadas não são consideradas por essa passagem.

Para uma fidelidade de corte ff, essa passagem remove as portas cuja fidelidade média em relação à identidade está abaixo de ff. Concretamente, uma porta GG é removida se Fˉ<f\bar F < f onde

Fˉ=1+dFprocess1+d, Fprocess=Tr(G)2d2\bar{F} = \frac{1 + d F_{\text{process}}}{1 + d},\ F_{\text{process}} = \frac{|\mathrm{Tr}(G)|^2}{d^2}

em que d=2nd = 2^n é a dimensão da porta para nn qubits.

Esta função é multithread e, por padrão, pode iniciar um pool de threads com um número de threads igual ao número de CPUs. Você pode ajustar o número de threads usando a variável RAYON_NUM_THREADS de ambiente. Por exemplo, definir RAYON_NUM_THREADS=4 limitaria o conjunto de threads a 4 threads.

Inicializa a passagem do transpilador.

Parâmetros

  • approximation_degree - O grau a ser aproximado para a verificação de equivalência. Esse pode ser um valor de ponto flutuante entre 0 e 1, ou None. Se o valor for 1, não haverá aproximação acima da precisão do ponto flutuante. Para um valor < 1, isso é usado como um fator de escala para a fidelidade de corte. Se o valor for None , isso se aproxima da fidelidade da porta especificada em target. Caso não seja definido target , aproximamos até 16 * machine_eps como padrão para levar em conta as acumulações em sistemas de poucos qubits.
  • alvo - Se approximation_degree estiver definido como None e um Target for fornecido para esse campo, a tolerância para determinar se uma operação é equivalente à identidade será definida como a taxa de erro relatada no destino. Se for approximation_degree (o padrão), não terá efeito; se for approximation_degree=None , usará a taxa de erro especificada em Target para a porta que está sendo avaliada, e um valor numérico diferente de 1 com target definido será usado como fator de escala da taxa de erro do alvo.

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 uma passagem no DAGCircuit. Isso é implementado pelo desenvolvedor do passe.

Parâmetros

dag (DAGCircuit) – o dag no qual o passe é executado.

Aumentos

NotImplementedError - quando isso não é implementado em uma passagem.

Tipo de retorno

DAGCircuit

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.