VF2PostLayout
class qiskit.transpiler.passes.VF2PostLayout(*args, **kwargs)
Bases: AnalysisPass
Uma passagem para aprimorar um layout existente após a transpilação de um circuito em um gráfico de acoplamento, como um problema de isomorfismo de subgráfico, resolvido por VF2++.
Ao contrário da passagem VF2Layout que foi projetada para encontrar um layout inicial para um circuito no início do pipeline de transpilação, essa passagem de transpilação foi projetada para tentar encontrar um layout melhor após a conclusão da transpilação. A fase inicial do layout do transpilador não tem tantas informações disponíveis quanto as que temos após a transpilação. Esse passe foi projetado para ser emparelhado em um pipeline semelhante ao dos passes de layout. Essa passagem removerá todos os fios ociosos do circuito, usará o site VF2 para encontrar um subgráfico no gráfico de acoplamento para que o circuito seja executado com melhor fidelidade e, em seguida, atualizará o layout do circuito para usar os novos qubits. O algoritmo usado nessa passagem é descrito em arXiv:2209.15512.
Se for encontrada uma solução, isso significa que há um layout de erro menor disponível para o circuito. Se for encontrada uma solução, o layout será definido no conjunto de propriedades como property_set['post_layout']. No entanto, se não for encontrada uma solução ou uma solução melhor, o site property_set['post_layout'] não será definido. O motivo de interrupção é definido em property_set['VF2PostLayout_stop_reason'] em todos os casos e será um dos valores enumerados em VF2PostLayoutStopReason , que tem os seguintes valores:
"solution found": Se uma solução foi encontrada."no better solution found": Se o layout inicial do circuito for a melhor solução."nonexistent solution": Se nenhuma solução foi encontrada.">2q gates in basis": Se o site VF2PostLayout não puder trabalhar com a base do circuito.
Por padrão, essa passagem criará um mapa de pontuação heurística com base nas taxas de erro no site target 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 VF2PostLayout for executado.
Inicializar uma instância da passagem VF2PostLayout
Parâmetros
- target (Target) – Um alvo que representa o dispositivo de backend no qual será executado o
VF2PostLayout. - seed (int) – Define a semente do PRNG. -1 Significa que não há embaralhamento de nós.
- call_limit (int) – O número de visitas de estado a serem tentadas em cada execução de VF2.
- time_limit (float) – O limite de tempo total em segundos para execução
VF2PostLayout - strict_direction (bool) – Se a passagem está configurada para seguir a direção estrita no gráfico de acoplamento. Se isso for definido como falso, a passagem tratará qualquer borda no gráfico de acoplamento como uma borda fraca e o gráfico de interação será não direcionado. Para fins de avaliação de layouts, será usada a taxa de erro média para cada qubit e link 2q. Isso permite que o passe seja executado antes da tradução da base e trabalhe com quaisquer operações 1q e 2q. No entanto, se
strict_direction=Truea passagem espera que o objetoDAGCircuitobjetorun()esteja no conjunto de instruções de destino. - max_trials (int) – O número máximo de tentativas a serem executadas VF2 para encontrar um layout. Um valor de
0(o padrão) significa "ilimitado".
Aumentos
TypeError - Em tempo de execução, se target não for fornecido.
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
Verifique 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
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