Skip to main content
IBM Quantum Platform

LookaheadSwap

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

GitHub

Bases: TransformationPass

Mapear o circuito de entrada em uma topologia de backend por meio da inserção de SWAPs.

Implementação do envio do swap mapper de Sven Jandura para o Qiskit Developer Challenge de 2018, adaptado para integração à arquitetura do transpilador.

A função da passagem do swapper é modificar o circuito inicial para que seja compatível com a topologia do dispositivo de destino (o conjunto de portas de dois qubits disponíveis no hardware) Para isso, a passagem inserirá portas SWAP para realocar os qubits virtuais para cada porta seguinte em um conjunto de qubits físicos acoplados. No entanto, como as portas SWAP são particularmente deficitárias, o objetivo é realizar esse remapeamento e, ao mesmo tempo, introduzir o menor número possível de SWAPs adicionais.

Esse algoritmo pesquisa as combinações disponíveis de portas SWAP por meio de uma pesquisa de melhor primeiro/feixe, descrita a seguir:

  • Comece com um layout de qubits virtuais em qubits físicos.
  • Encontre quaisquer portas no circuito de entrada que possam ser executadas com o layout atual e marque-as como mapeadas.
  • Para todos os possíveis portões SWAP, calcule o layout que resultaria de sua aplicação e classifique-os de acordo com a distância do layout resultante em relação aos portões futuros (consulte _calc_layout_distance)
  • Para os quatro SWAPs de classificação mais alta (search_width), repita o processo acima no layout que seria gerado se eles fossem aplicados.
  • Repita esse processo até uma profundidade de quatro (search_depth) SWAPs de distância do layout inicial, para um total de 256 (search_width^search_depth) layouts em potencial.
  • Escolha o layout que maximiza o número de dois qubits que podem ser executados. Adicione suas portas mapeadas, incluindo os SWAPs gerados, ao circuito de saída.
  • Repita o procedimento acima até que todas as portas do circuito inicial sejam mapeadas.

Para obter mais detalhes sobre o algoritmo, consulte a publicação do blog de Sven: https://medium.com/qiskit/improving-a-quantum-compiler-48410d7a7084

LookaheadSwap inicializador.

Parâmetros

  • coupling_map (Union[CouplingMap, Target]) – CouplingMap do backend de destino.
  • search_depth (int) – profundidade da árvore de lookahead ao classificar as melhores opções de SWAP.
  • search_width (int) – largura da árvore de lookahead ao classificar as melhores opções de SWAP.
  • fake_run (bool) – se for verdadeiro, ele apenas fingirá fazer o roteamento, ou seja, nenhuma troca será efetivamente adicionada.

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 LookaheadSwap no dag.

Parâmetros

dag (DAGCircuit) – o gráfico acíclico direcionado a ser mapeado

Retorna

Um dag mapeado para ser compatível com o coupling_map em

a propriedade_set.

Tipo de retorno

DAGCircuit

Aumentos

  • TranspilerError - Se o mapa de acoplamento ou o layout não forem
  • compatível com o DAG**, ou ** se o coupling_map=None -

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.