Skip to main content
IBM Quantum Platform

WrapAngles

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

GitHub

Bases: TransformationPass

Envolve os ângulos fora do limite especificado no alvo.

Essa passagem verificará todos os portões no circuito e verificará se há algum portão fora do limite especificado no alvo. Se qualquer porta fora do limite for identificada, o retorno de chamada no destino será chamado para substituir a porta fora do limite por um subcircuito equivalente. Essa passagem não é executada em portas que são parametrizadas, mesmo que a porta tenha parâmetros não parametrizados fora de um limite especificado. Se houver portas parametrizadas no circuito, elas serão ignoradas por essa passagem, já que são necessários ângulos vinculados para transformar a porta. Por exemplo, o exemplo abaixo demonstra como o mecanismo de retorno de chamada e o registro funcionam, mas não mostra uma transformação útil, mas é simples de seguir:

from qiskit.circuit import Gate, Parameter, Qubit, QuantumCircuit
from qiskit.circuit.library import RZGate
from qiskit.dagcircuit import DAGCircuit
from qiskit.transpiler.passes import WrapAngles
from qiskit.transpiler import Target, WrapAngleRegistry

param = Parameter("a")
circuit = QuantumCircuit(1)
circuit.rz(6.8, 0)
target = Target(num_qubits=1)
target.add_instruction(RZGate(param), angle_bounds=[(0, 0.5)])

def callback(angles, _qubits):
    angle = angles[0]
    if angle > 0:
        number_of_gates = angle / 0.5
    else:
        number_of_gates = (6.28 - angle) / 0.5
    dag = DAGCircuit()
    dag.add_qubits([Qubit()])
    for _ in range(int(number_of_gates)):
        dag.apply_operation_back(RZGate(0.5), [dag.qubits[0]])
    return dag

registry = WrapAngleRegistry()
registry.add_wrapper("rz", callback)
wrap_pass = WrapAngles(target, registry)
res = wrap_pass(circuit)
res.draw("mpl")
Diagrama de circuito da saída resultante da execução da passagem " WrapAngles "

Parâmetros

  • target (Target) – O Target que representa a QPU de destino.

  • registry (WrapAngleRegistry) –

    O registro das funções de envolvimento utilizadas pela passagem para envolver os ângulos de um portão. Se não for especificado, o objeto DEFAULT_REGISTRY global será usado.

    A menos que você esteja planejando executar esta passagem de forma independente ou esteja criando uma personalizada PassManager que inclua esta passagem, você vai querer contar com DEFAULT_REGISTRY.


Atributos

REGISTRO PADRÃO

Valor Padrão: <qiskit._accelerate.angle_bound_registry.WrapAngleRegistry object>

Uma instância global que WrapAngleRegistry é usada por padrão por esta passagem quando nenhum registro explícito é especificado.

Nota

Isso também está acessível publicamente no local qiskit.transpiler.passes.utils.wrap_angles.WRAP_ANGLE_REGISTRY devido a uma falha no Qiskit 2.2 (em que o caminho estendido é o único local válido). É altamente recomendável acessar este objeto por meio de WrapAngles, no entanto, se você não precisar oferecer suporte ao Qiskit 2.2.

Nota

As tentativas de gravar um objeto de registro totalmente novo no qiskit.transpiler.passes.utils.wrap_angles caminho não serão refletidas nas configurações padrão no Qiskit 2.3 em diante. Embora não recomendemos tentar sobrescrever o objeto completamente, caso precise fazer isso e para oferecer suporte ao Qiskit 2.2 em diante, você deve escrever referências ao mesmo objeto em ambos:

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 - o dag no qual o passe é executado.

Aumentos

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

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.