Skip to main content
IBM Quantum Platform

Gerenciadores de senhas predefinidos

qiskit.transpiler.preset_passmanagers

Esse módulo contém funções para gerar os gerenciadores de passagem predefinidos para o transpilador. Os gerenciadores de passagem predefinidos são instâncias de StagedPassManager que são usadas para executar as transformações de circuito como parte do compilador do Qiskit dentro da função transpile() nos diferentes níveis de otimização, mas também podem ser usados de forma autônoma. A funcionalidade aqui está dividida em duas partes. A primeira inclui as funções usadas para gerar todo o gerenciador de passagem, que é usado por transpile() (Geração de gerenciador de passagem predefinida de baixo nível ), e a segunda inclui funções usadas para criar (total ou parcialmente) os estágios que compreendem os gerenciadores de passagem predefinidos (Funções geradoras de estágio ).


Geração de gerenciador de passagem predefinido de baixo nível

Conjuntos de bases contínuas

level_0_pass_manager

qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)

GitHub

Gerenciador de passagem de nível 0: nenhuma otimização explícita além do mapeamento para o backend.

Esse gerenciador de passagens aplica o layout inicial fornecido pelo usuário. Se nenhum for fornecido, será usado um layout trivial que consiste em mapear o i-ésimo qubit virtual para o i-ésimo qubit físico. Qualquer qubit físico não utilizado é alocado como espaço ancilla.

Em seguida, o gerenciador de passagens desenrola o circuito para a base desejada e transforma o circuito para corresponder ao mapa de acoplamento.

Parâmetros

pass_manager_config (PassManagerConfig) – configuração do gerenciador de passes.

Retorna

um gerenciador de passes de nível 0.

Aumentos

TranspilerError - se a configuração do gerenciador de senhas for inválida.

Tipo de retorno

StagedPassManager

level_1_pass_manager

qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)

GitHub

Gerenciador de passagem de nível 1: otimização de luz por meio do simples colapso de porta adjacente.

Esse gerenciador de passagens aplica o layout inicial fornecido pelo usuário. Se nenhum for fornecido e um layout trivial (i-ésimo virtual -> i-ésimo físico) fizer com que o circuito se ajuste ao mapa de acoplamento, ele será usado. Caso contrário, o circuito é mapeado para o subgrafo de acoplamento mais densamente conectado, e as trocas são inseridas para mapear. Qualquer qubit físico não utilizado é alocado como espaço ancilla. Em seguida, o gerenciador de passagens desenrola o circuito para a base desejada e transforma o circuito para corresponder ao mapa de acoplamento. Por fim, são realizadas otimizações na forma de colapso de porta adjacente e remoção de reinicialização redundante.

Parâmetros

pass_manager_config (PassManagerConfig) – configuração do gerenciador de passes.

Retorna

um gerente de aprovação de nível 1.

Aumentos

TranspilerError - se a configuração do gerenciador de senhas for inválida.

Tipo de retorno

StagedPassManager

level_2_pass_manager

qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)

GitHub

Gerenciador de aprovação de nível 2: otimização média por seleção de layout inicial e cancelamento de porta usando regras de comutatividade.

Esse gerenciador de passagens aplica o layout inicial fornecido pelo usuário. Se nenhum for fornecido, será realizada uma busca por um layout perfeito (ou seja, um que satisfaça todas as interações de 2 qubit). Se esse layout não for encontrado, os qubits são dispostos no subconjunto mais densamente conectado que também apresenta as melhores fidelidades de porta.

Em seguida, o gerenciador de passagens transforma o circuito para atender às restrições de acoplamento. Em seguida, ele é desenrolado para a base, e todas as direções cx invertidas são fixadas. Por fim, são realizadas otimizações na forma de cancelamento de porta comutativa e remoção de reinicialização redundante.

Parâmetros

pass_manager_config (PassManagerConfig) – configuração do gerenciador de passes.

Retorna

um gerente com aprovação de nível 2.

Aumentos

TranspilerError - se a configuração do gerenciador de senhas for inválida.

Tipo de retorno

StagedPassManager

level_3_pass_manager

qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)

GitHub

Gerenciador de passagem de nível 3: otimização pesada por mapeamento de qubit adaptável a ruído e cancelamento de porta usando regras de comutatividade e síntese unitária.

Esse gerenciador de passagens aplica o layout inicial fornecido pelo usuário. Se nenhum for fornecido, será realizada uma busca por um layout perfeito (ou seja, um que satisfaça todas as interações de 2 qubit). Se esse layout não for encontrado e as informações de calibração do dispositivo estiverem disponíveis, o circuito será mapeado para os qubits com as melhores leituras e para as portas CX com a maior fidelidade.

Em seguida, o gerenciador de passagens transforma o circuito para atender às restrições de acoplamento. Em seguida, ele é desenrolado para a base, e todas as direções cx invertidas são fixadas. Por fim, são realizadas otimizações na forma de cancelamento de porta comutativa, ressíntese de blocos unitários de dois qubits, remoção de reinicialização redundante e melhorias no layout final.

Parâmetros

pass_manager_config (PassManagerConfig) – configuração do gerenciador de passes.

Retorna

um gerente com aprovação de nível 3.

Aumentos

TranspilerError - se a configuração do gerenciador de senhas for inválida.

Tipo de retorno

StagedPassManager

Conjuntos de bases Clifford+T

clifford_t_pass_manager

qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)

GitHub

Gerar um gerenciador de etapas para a transpilagem para a base Clifford+T.

Esta função é invocada generate_preset_pass_manager() quando a base de destino é composta por portas Clifford+T. Ele gera um pipeline de transpilagem especializado composto pelas seguintes etapas:

  • Inicialização: Decompor portas maiores em portas de 1 e 2 qubits e realizar otimizações lógicas.
  • Layout: Aplique a estratégia de layout padrão usada para conjuntos de bases contínuas.
  • Roteamento: Aplique a estratégia de roteamento padrão usada para conjuntos de bases contínuas.
  • Tradução RZ: Traduzir o circuito para a base Clifford+RZ.
  • Otimização RZ: Otimizar o circuito na base Clifford+RZ.
  • Tradução de T: Traduzir o circuito para a base de Clifford+T.
  • Otimização T: Otimiza o circuito na base Clifford+T.
  • Agendamento: aplique a estratégia de agendamento padrão usada para conjuntos de bases contínuas.

Para obter melhores resultados, considere incluir tanto o TT quanto o TT^\dagger na base de Clifford+T especificada, bem como o maior número possível de portas de Clifford. Por exemplo:

basis_gates = get_clifford_gate_names() + ["t", "tdg"]
Nota

Essas etapas ainda estão em fase experimental e estão sujeitas a alterações. Em particular, eles ainda não estão disponíveis como plug-ins da etapa de transpilador (ao contrário das etapas para conjuntos de bases contínuas). Além disso, os campos que pass_manager_config se aplicam à transpilagem para o conjunto de bases contínuas são ignorados por este gerenciador de passagens.

Parâmetros

  • pass_manager_config (PassManagerConfig) – Configuração do gerenciador de senhas.
  • optimization_level (int) – O nível de otimização. Por padrão, é utilizado o nível de otimização 2, caso não seja especificado. Esse valor pode ser 0, 1, 2 ou 3. Níveis mais altos geram circuitos potencialmente mais otimizados, em detrimento de um tempo de transpilagem mais longo.

Retorna

Gerenciador de passagens por etapas.

Aumentos

TranspilerError - se a configuração do gerenciador de senhas for inválida.

Tipo de retorno

StagedPassManager


Funções do gerador de estágios

generate_control_flow_options_check

qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)

GitHub

Gere um gerenciador de passes que, quando executado em um DAG que contenha fluxo de controle, falhe com uma mensagem de erro explicando as opções inválidas e o que poderia ser usado em seu lugar.

Retorna

um gerenciador de passes que preenche as propriedades contains_x para cada uma das operações de fluxo de controle e gera um erro se alguma das opções fornecidas não for compatível com o fluxo de controle, mas um circuito com fluxo de controle for fornecido.

Tipo de retorno

PassManager

generate_error_on_control_flow

qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)

GitHub

Obtenha um gerenciador de passagem que sempre gera um erro se o fluxo de controle estiver presente em um determinado circuito.

generate_unroll_3q

qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q)

GitHub

Gerar um desenrolar >3q PassManager

Parâmetros

  • target (Target) – o Target objeto que representa o backend
  • basis_gates (list) – Uma lista de nomes de portas str que representam as portas de base no destino de back-end
  • approximation_degree (Optional[float]) – O grau de aproximação heurística a ser usado. Pode estar entre 0 e 1.
  • unitary_synthesis_method (str) – O método de síntese unitária a ser usado. Você pode ver uma lista dos plug-ins instalados com unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict) – A configuração opcional do plug-in do dicionário, que é específica do plug-in, consulte a documentação do plug-in especificado para saber como usá-lo.
  • hls_config (HLSConfig) – Uma classe de configuração opcional a ser usada para HighLevelSynthesis passar. Especifica como sintetizar vários objetos de alto nível.
  • qubits_initially_zero (bool) – Indica se o circuito de entrada está inicializado com zero.
  • optimization_metric (OptimizationMetric) – o OptimizationMetric objeto que define a métrica utilizada na otimização do desenrolamento.

Retorna

O desenrolar 3q ou mais gerenciador de passes

Tipo de retorno

PassManager

generate_embed_passmanager

qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)

GitHub

Gerar uma incorporação de layout PassManager

Isso é usado para gerar um objeto PassManager que pode ser usado para expandir e aplicar um layout inicial a um circuito

Parâmetros

coupling_map (Union[CouplingMap, Target]) – O mapa de acoplamento para o backend no qual o circuito será incorporado.

Retorna

O gerenciador de senhas incorporado que assume a propriedade de layout

definido foi definido em estágios anteriores

Tipo de retorno

PassManager

generate_routing_passmanager

qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)

GitHub

Gerar um roteamento PassManager

Parâmetros

  • routing_pass (TransformationPass) – A passagem que executará o roteamento
  • target (Target) – o Target objeto que representa o backend
  • coupling_map (CouplingMap) – O mapa de acoplamento do backend a ser roteado para
  • vf2_call_limit (int) – O limite de chamadas internas para a passagem de layout de postagem vf2. Se for None ou 0 , o layout de postagem vf2 não será executado.
  • seed_transpiler (int) – Define a semente aleatória para as partes estocásticas do transpilador. Atualmente, isso é usado somente para VF2PostLayout e o valor padrão de -1 é altamente recomendado (que é sem randomização). Se for fornecido um valor de None , ele será semeado a partir da entropia do sistema.
  • check_trivial (bool) – Se definido como true, isso condicionará a execução da VF2PostLayout após o roteamento, se um layout trivial foi tentado e não foi considerado perfeito. Isso só é necessário se o gerenciador de passagens construído for executado TrivialLayout como uma primeira tentativa de layout e usá-lo se for um layout perfeito (como é o caso do nível 1 do gerenciador de passagens predefinido).
  • use_barrier_before_measurement (bool) – Se for verdadeiro (o padrão), a passagem do BarrierBeforeFinalMeasurements será executada antes da passagem especificada no argumento routing_pass .
  • vf2_max_trials (int) – O número máximo de tentativas a serem executadas VF2 ao avaliar a passagem do pós-layout vf2. Se for None ou 0 , o layout de postagem vf2 não será executado.

Retorna

O gerenciador de passes de roteamento

Tipo de retorno

PassManager

generate_pre_op_passmanager

qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)

GitHub

Gerar um loop de pré-otimização PassManager

Esse gerenciador de passagens verificará para garantir que a direcionalidade do mapa de acoplamento seja respeitada.

Descontinuado desde a versão 2.0

A função qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() está obsoleta desde o Qiskit 2.0. Ele será removido no Qiskit 3.0. Os plug-ins de tradução agora precisam respeitar a direcionalidade do ISA, portanto, normalmente não é necessária nenhuma substituição.

Parâmetros

  • target (Target) – o Target objeto que representa o backend
  • coupling_map (CouplingMap) – O mapa de acoplamento a ser usado
  • remove_reset_in_zero (bool) – Se o site True incluir a redefinição de remoção em passagem zero no sistema gerado PassManager

Retorna

O gerente de passes

Tipo de retorno

PassManager

generate_translation_passmanager

qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)

GitHub

Gerar uma tradução de base PassManager

Parâmetros

  • target (Target) – o Target objeto que representa o backend
  • basis_gates (list) – Uma lista de nomes de portas str que representam as portas de base no destino de back-end
  • method (str) – O método de conversão de base a ser usado
  • approximation_degree (Optional[float]) – O grau de aproximação heurística a ser usado. Pode estar entre 0 e 1.
  • coupling_map (CouplingMap) – o mapa de acoplamento do backend, caso a síntese seja feita em um circuito físico. A direcionalidade do mapa de acoplamento será levada em conta se pulse_optimize for True/None e natural_direction for True/None.
  • unitary_synthesis_plugin_config (dict) – A configuração opcional do plug-in do dicionário, que é específica do plug-in, consulte a documentação do plug-in especificado para saber como usá-lo.
  • unitary_synthesis_method (str) – O método de síntese unitária a ser usado. Você pode ver uma lista dos plug-ins instalados com unitary_synthesis_plugin_names().
  • hls_config (HLSConfig) – Uma classe de configuração opcional a ser usada para HighLevelSynthesis passar. Especifica como sintetizar vários objetos de alto nível.
  • qubits_initially_zero (bool) – Indica se o circuito de entrada está inicializado com zero.

Retorna

O gerenciador de passes de tradução básica

Tipo de retorno

PassManager

Aumentos

TranspilerError - Se o method kwarg não for um valor válido

generate_scheduling

qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)

GitHub

Gerar um agendamento de pós-otimização PassManager

Parâmetros

  • instruction_durations (dict) – O dicionário de durações de instrução
  • scheduling_method (str) – O método de agendamento a ser usado pode ser 'asap'/'as_soon_as_possible' ou 'alap'/'as_late_as_possible'
  • timing_constraints (TimingConstraints) – Restrições de alinhamento de tempo do hardware.
  • target (Target) – O objeto Target que representa o backend

Retorna

O gerenciador de passes de agendamento

Tipo de retorno

PassManager

Aumentos

TranspilerError - Se o scheduling_method kwarg não for um valor válido

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.