Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_pass_manager

qiskit.transpiler.generate_preset_pass_manager(optimization_level=2, backend=None, target=None, basis_gates=None, coupling_map=None, initial_layout=None, layout_method=None, routing_method=None, translation_method=None, scheduling_method=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, init_method=None, optimization_method=None, dt=None, qubits_initially_zero=True, *, _skip_target=False)

GitHub

Gerar uma predefinição PassManager

Essa função é usada para gerar rapidamente um gerenciador de passes predefinido. Os gerenciadores de passagem predefinidos são os gerenciadores de passagem padrão utilizados pela função transpile() . Essa função oferece um método prático e simples para criar um objeto independente PassManager que reflete o que a transpile() função constrói e utiliza internamente.

As restrições de destino para a construção do gerenciador de passagens podem ser especificadas por meio de uma Target instância, uma BackendV2 ou por meio de restrições soltas (basis_gates, coupling_map, ou dt). A ordem de prioridades para as restrições de destino funciona da seguinte forma: se uma entrada target for fornecida, ela terá prioridade sobre qualquer entrada backend ou restrições soltas. Se o site backend for fornecido junto com qualquer restrição não obrigatória da lista acima, a restrição não obrigatória terá prioridade sobre a restrição de backend correspondente. Esse comportamento está resumido na tabela abaixo. A primeira coluna da tabela resume as possíveis restrições fornecidas pelo usuário, e cada célula mostra se a prioridade é atribuída a essa entrada de restrição específica ou a outra entrada (destino/backend( V1 )/backend( V2 )).

Fornecido pelo usuário
destino
backend( V2 )
base_portõesdestinobase_portões
acoplamento_mapadestinoacoplamento_mapa
dtdestinodt
Nota

Quando a base de destino é composta por portas Clifford+T, essa função constrói um pipeline de transpiler Clifford+T especializado; consulte generate_preset_clifford_t_pass_manager() para obter documentação mais detalhada. Os argumentos que se aplicam apenas à transpilagem para conjuntos de bases contínuas são ignorados neste fluxo. Por exemplo, o "unitary_synthesis_method" não é levado em conta ao sintetizar operadores unitários de um único qubit em uma sequência Clifford+T.

Parâmetros

  • optimization_level (int) –

    O nível de otimização para gerar um StagedPassManager para. Por padrão, o nível de otimização 2 é usado se isso não for especificado. Pode ser 0, 1, 2 ou 3. Níveis mais altos geram circuitos potencialmente mais otimizados, à custa de um tempo de transpilação mais longo:

    • 0: sem otimização
    • 1: otimização da luz
    • 2: otimização pesada
    • 3: otimização ainda mais pesada
  • backend (Backend | None) – Um objeto de backend opcional que pode ser usado como fonte dos valores padrão para, basis_gates coupling_map, e target. Se algum desses outros argumentos for especificado além do backend , eles terão precedência sobre o valor contido no backend.

  • target (Target | None) – O Target que representa um destino de compilação de backend. Os seguintes atributos serão inferidos a partir desse argumento, caso não estejam definidos: coupling_map e basis_gates.

  • basis_gates (list[str] | None) – Lista dos nomes das portas de base para as quais se deve realizar o desenrolamento (por exemplo: ['u1', 'u2', 'u3', 'cx']).

  • coupling_map (CouplingMap |list | None) –

    O gráfico direcionado representava um mapa de acoplamento. Vários formatos são suportados:

    1. CouplingMap instância
    2. Lista, deve ser fornecida como uma matriz de adjacência, em que cada entrada especifica todas as interações direcionadas de dois qubits compatíveis com o backend, por exemplo [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • initial_layout (Layout |list[int]) – Posição inicial dos qubits virtuais nos qubits físicos.

  • layout_method (str | None) – O método Pass a ser utilizado para escolher o posicionamento inicial dos qubits. As opções válidas são 'trivial', 'dense', e 'sabre', representando TrivialLayout, DenseLayout e SabreLayout , respectivamente. StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado na layout etapa de saída. Você pode ver uma lista dos plugins instalados usando list_stage_plugins() com "layout" como argumento stage_name .

  • routing_method (str | None) – O pass para ser usado no roteamento de qubits na arquitetura. As opções válidas são 'basic', 'lookahead', 'sabre', e 'none' , representando BasicSwap, LookaheadSwap, SabreSwap, e gerando erro caso seja necessário o roteamento, respectivamente. StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado na routing etapa de saída. Você pode ver uma lista dos plugins instalados usando list_stage_plugins() com "routing" como argumento stage_name .

  • translation_method (str | None) – O método a ser utilizado para converter portas em portas de base. 'translator'Opções válidas, 'synthesis' representando BasisTranslatore UnitarySynthesis , respectivamente. StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado na translation etapa de saída. Você pode ver uma lista dos plugins instalados usando list_stage_plugins() com "translation" como argumento stage_name .

  • scheduling_method (str | None) – O passe a ser utilizado para agendar aulas. As opções válidas são 'alap' e 'asap'. StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado na scheduling etapa de saída. Você pode ver uma lista dos plugins instalados usando list_stage_plugins() com "scheduling" como argumento stage_name .

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

  • seed_transpiler (int | None) – Define uma semente aleatória para as partes estocásticas do transpiler. Se não for especificado aqui, também pode ser definido por meio de uma variável de ambiente: QISKIT_TRANSPILER_SEED ou em um arquivo de configuração do usuário. A ordem de prioridade é: este argumento, depois a variável de ambiente e, por fim, a opção de configuração do usuário. Portanto, definir esse argumento terá prioridade sobre os outros métodos de definição de uma semente.

  • unitary_synthesis_method (str) – O nome do método de síntese unitária a ser usado. Por padrão, 'default' é usado. Você pode ver uma lista dos plug-ins instalados com unitary_synthesis_plugin_names().

  • unitary_synthesis_plugin_config (dict | None) – Um dicionário de configuração opcional que será passado diretamente para o plug-in de síntese unitária. Por padrão, essa configuração não terá efeito, pois o método padrão de síntese unitária não aceita configurações personalizadas. Isso só deve ser necessário quando um plug-in de síntese unitária for especificado com o unitary_synthesis_method argumento. Como isso varia de acordo com cada plug-in de síntese unitária, consulte a documentação do plug-in para saber como usar essa opção.

  • hls_config (HLSConfig | None) – Uma classe HLSConfig de configuração opcional que será passada diretamente para HighLevelSynthesis a etapa de transformação. Essa classe de configuração permite especificar, para diversos objetos de alto nível, as listas de algoritmos de síntese e seus parâmetros.

  • StagedPassManagerinit_method (str | None) – O nome do plug-in a ser usado para a init etapa de saída. Por padrão, não é utilizado nenhum plug-in externo. É possível visualizar uma lista dos plugins instalados usando list_stage_plugins() com "init" como argumento para o nome do estágio.

  • StagedPassManageroptimization_method (str | None) – O nome do plug-in a ser usado para a optimization etapa de saída. Por padrão, não é utilizado nenhum plug-in externo. Você pode ver uma lista dos plugins instalados usando list_stage_plugins() com "optimization" como argumento stage_name .

  • dt (float | None) – Tempo de amostragem (resolução) do backend em segundos. Se None (padrão) e for fornecido um backend, backend.dt é utilizado.

  • qubits_initially_zero (bool) – Indica se o circuito de entrada está inicializado com zero.

Retorna

O gerenciador de passes predefinido para as opções fornecidas

Tipo de retorno

StagedPassManager

Aumentos

ValueError - se for passado um valor inválido para optimization_level .

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