Skip to main content
IBM Quantum Platform

Gerenciadores de senhas predefinidos

qiskit.transpiler.preset_passmanagers

Este módulo contém funções para gerar os gerenciadores de passagens predefinidas para o transpilador. Os gerenciadores de passagem predefinidos são instâncias de StagedPassManager que são utilizadas para executar as transformações de circuitos como parte do compilador do Qiskit dentro da transpile() função nos diferentes níveis de otimização, mas também podem ser utilizados de forma independente. A funcionalidade aqui está dividida em duas partes. O primeiro inclui as funções utilizadas para gerar todo o gerenciador de passagens, que é utilizado por transpile() ( Geração de gerenciador de passagens predefinidas de baixo nível ), e o segundo inclui funções que são utilizadas para construir (total ou parcialmente) os estágios que compõem os gerenciadores de passagens predefinidas ( Funções do gerador de estágios ).


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 senhas.

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 senhas.

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 senhas.

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 senhas.

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.

generate_preset_pass_manager() Essa função é chamada quando a base-alvo é 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 T†T^\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 transpilação (ao contrário das etapas para conjuntos de bases contínuas).

Parâmetros

  • pass_manager_config (PassManagerCliffordTConfig) – 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 unroll >3q PassManager

Parâmetros

  • target (Target | None) – o Target objeto que representa o backend
  • basis_gates (list[str] | None) – Uma lista de nomes de portas “str” que representam as portas básicas no destino do backend.
  • approximation_degree (float | None) – Botão heurístico utilizado para a aproximação do circuito, em que 1.0 significa que não há aproximação (dentro da tolerância numérica) e 0.0 significa a aproximação máxima. Se target estiver disponível, um valor de None indica que é permitida uma aproximação até a taxa de erro relatada para uma operação no destino.
  • unitary_synthesis_method (str) – O método de síntese unitária a ser utilizado. Você pode ver uma lista dos plugins instalados com unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – A configuração opcional do plug-in de dicionário é específica para cada plug-in; consulte a documentação do plug-in em questão para saber como utilizá-la.
  • hls_config (HLSConfig | None) – Uma classe de configuração opcional a ser usada para HighLevelSynthesis o pass. Especifica como sintetizar diversos 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 serve para gerar um PassManager objeto 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 roteiro PassManager

Parâmetros

  • routing_pass (TransformationPass) – A etapa que realizará o roteamento
  • target (Target) – o Target objeto que representa o backend
  • coupling_map (CouplingMap) – O mapa de mapeamento do backend para o route for
  • 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 uma semente aleatória para as partes estocásticas do transpiler. Atualmente, isso é usado apenas para VF2PostLayout e recomenda-se fortemente o uso do valor padrão de -1 (ou seja, sem randomização). Se for fornecido um valor de None , a semente será gerada a partir da entropia do sistema.
  • check_trivial (bool) – Se definido como “true”, isso determinará se a execução da VF2PostLayout etapa após o roteamento ocorrerá ou não, dependendo de se um layout trivial tiver sido tentado e não tiver sido considerado perfeito. Isso só é necessário se o gerenciador de passagens criado for executado TrivialLayout como uma primeira tentativa de layout e for utilizado caso o layout seja perfeito (como é o caso do gerenciador de passagens predefinido de nível 1).
  • use_barrier_before_measurement (bool) – Se for verdadeiro (padrão), a BarrierBeforeFinalMeasurements etapa do transpiler será executada antes da etapa especificada no routing_pass argumento.
  • 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 ciclo 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 utilizado
  • 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 referência PassManager

Parâmetros

  • target (Target | None) – o Target objeto que representa o backend
  • basis_gates (list[str] | None) – Uma lista de nomes de portas “str” que representam as portas básicas no destino do backend
  • method (str) – O método de conversão de base a ser usado
  • approximation_degree (float | None) – Botão heurístico utilizado para a aproximação do circuito, em que 1.0 significa que não há aproximação (dentro da tolerância numérica) e 0.0 significa a aproximação máxima. Se target estiver disponível, um valor de None indica que é permitida uma aproximação até a taxa de erro relatada para uma operação no destino.
  • coupling_map (CouplingMap | None) – o mapa de acoplamento do backend, caso a síntese seja realizada em um circuito físico. A direcionalidade do mapping de acoplamento será levada em consideração se pulse_optimize for True/None e natural_direction for True/None.
  • unitary_synthesis_method (str) – O método de síntese unitária a ser utilizado. Você pode ver uma lista dos plugins instalados com unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict | None) – A configuração opcional do plug-in de dicionário é específica para cada plug-in; consulte a documentação do plug-in em questão para saber como utilizá-la.
  • hls_config (HLSConfig | None) – Uma classe de configuração opcional a ser usada para HighLevelSynthesis o pass. Especifica como sintetizar diversos 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 uma programação de otimização posterior 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 Target objeto 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.