Skip to main content
IBM Quantum Platform

VF2Layout

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

GitHub

Bases: AnalysisPass

Uma passagem para escolher um layout de um circuito em um gráfico de acoplamento, como um problema de isomorfismo de subgrafo, resolvido por VF2++.

Se for encontrada uma solução, isso significa que há um "layout perfeito" e que não é necessário nenhum outro mapeamento ou roteamento de swap. Se for encontrada uma solução, o layout será definido no conjunto de propriedades como property_set['layout']. No entanto, se nenhuma solução for encontrada, o site property_set['layout'] não será definido. O motivo de interrupção é definido em property_set['VF2Layout_stop_reason'] em todos os casos e será um dos valores enumerados em VF2LayoutStopReason , que tem os seguintes valores:

  • "solution found": Se um layout perfeito foi encontrado.
  • "nonexistent solution": Se não foi encontrado um layout perfeito.
  • ">2q gates in basis": Se o VF2Layout não puder trabalhar com base

Por padrão, essa passagem construirá um mapa de pontuação heurística com base nas taxas de erro no site target fornecido (ou properties se target não for fornecido). No entanto, as passagens de análise podem ser executadas antes dessa passagem e definidas vf2_avg_error_map no conjunto de propriedades com uma instância ErrorMap . Se um valor for NaN , ele será tratado como uma borda ideal. Por exemplo, se um mapa de erros for criado como:

from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap

error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)

que representa o mapa de erros para um alvo de 2 qubits, em que a taxa média de erro 1q é 0.0024 no qubit 0 e 0.0032 no qubit 1. Então, a taxa média de erro 2q para portas que operam em (0, 1) é 0.01 e (1, 0) não é compatível com o alvo. Isso será usado para pontuação se for definido como a chave vf2_avg_error_map no conjunto de propriedades quando VF2Layout for executado.

Inicializar uma instância da passagem VF2Layout

Parâmetros

  • coupling_map (CouplingMap) – Gráfico direcionado que representa um mapa de acoplamento.
  • strict_direction (bool) – Se for True, considera a direção do mapa de acoplamento. O padrão é False.
  • seed (int | None) – embaralhe a rotulagem dos qubits físicos para os índices dos nós no gráfico de acoplamento, usando uma semente pRNG fornecida. None sementes usando entropia do sistema operacional (e, portanto, não é determinístico). Usar -1 desativa a aleatoriedade.
  • call_limit (None | int |tuple[int | None,int | None]) – O número máximo de vezes que a pesquisa interna de isomorfismo VF2 tentará estender o mapeamento. Se None, então não há limite. Se for um tuplo de 2, o limite começa como o primeiro item e muda para o segundo após a primeira correspondência ser encontrada, sem redefinir o número de etapas realizadas. Isso pode ser usado para permitir uma longa busca por qualquer mapeamento, mas ainda assim terminar rapidamente com um pequeno orçamento de extensão, caso seja encontrado.
  • time_limit (float) – O tempo total limite em segundos para executar VF2Layout. Isso não é totalmente rígido; a execução será concluída no primeiro isomorfismo encontrado (se houver) após o tempo limite ter sido excedido. Definir esta opção quebra o determinismo da passagem.
  • max_trials (int) – Se definido, o algoritmo termina após esse número de layouts completos terem sido vistos. Como a pontuação é feita em tempo real, a grande maioria dos layouts candidatos é eliminada da pesquisa antes mesmo de ser concluída, portanto, essa opção tem pouco significado. Para definir um limite baixo para o tempo gasto melhorando um limite inicial, defina um valor baixo para o segundo item no formulário call_limit de 2 tuplas.
  • target (Target) – Um alvo que representa o dispositivo de backend no qual será executado o VF2Layout . Se especificado, ele substituirá um valor definido para coupling_map se o Target contiver restrições de conectividade. Se o valor de target modelar um backend ideal sem nenhuma restrição, o valor de coupling_map será usado.

Aumentos

TypeError - Em tempo de execução, se nem coupling_map nem target forem fornecidos.


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

executar o método de layout

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.