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 passagem predefinido. Os gerentes de autorização predefinidos são os gerentes de autorização padrão usados pela transpile() função. Essa função fornece um método simples e conveniente para construir um objeto autônomo PassManager autônomo que espelha o que a função transpile() constrói e usa 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, esta função constrói um pipeline de transpiler Clifford+T especializado; consulte clifford_t_pass_manager() para obter a documentação. Os argumentos que se aplicam à transpilagem para conjuntos de bases contínuas são ignorados neste fluxo.

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) – Um objeto de backend opcional que pode ser usado como fonte dos valores padrão para basis_gates, coupling_map e target. Se qualquer um desses outros argumentos for especificado além de backend , eles terão precedência sobre o valor contido no backend.

  • target (Target) – O Target que representa um destino de compilação de back-end. Os seguintes atributos serão inferidos a partir desse argumento se não estiverem definidos: coupling_map e basis_gates.

  • basis_gates (list) – Lista de nomes de portas de base para as quais desenrolar (por exemplo: ['u1', 'u2', 'u3', 'cx']).

  • coupling_map (CouplingMap orlist) –

    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]]
  • dt (float) – Tempo de amostragem (resolução) do backend em segundos. Se None (padrão) e um backend forem fornecidos, backend.dt será usado.

  • initial_layout (Layout | List[int]) – Posição inicial dos qubits virtuais nos qubits físicos.

  • layout_method (str) – O Pass a ser usado para escolher o posicionamento inicial do qubit. As opções válidas são 'trivial', 'dense', e 'sabre', representando TrivialLayout, DenseLayout e SabreLayout respectivamente. Esse também pode ser o nome do plug-in externo a ser usado para o estágio layout da saída StagedPassManager. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "layout" para o argumento stage_name .

  • routing_method (str) – A passagem a ser usada para rotear qubits na arquitetura. As opções válidas são 'basic', 'lookahead', 'sabre', e 'none' representando BasicSwap, LookaheadSwap, SabreSwap, e erro se o roteamento for necessário, respectivamente. Esse também pode ser o nome do plug-in externo a ser usado para o estágio routing da saída StagedPassManager. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "routing" para o argumento stage_name .

  • translation_method (str) – O método a ser usado para converter portas em portas de base. Opções válidas 'translator', 'synthesis' representando BasisTranslator, e UnitarySynthesis respectivamente. Esse também pode ser o nome do plug-in externo a ser usado para o estágio translation da saída StagedPassManager. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "translation" para o argumento stage_name .

  • scheduling_method (str) – O passe a ser usado para programar instruções. As opções válidas são 'alap' e 'asap'. Esse também pode ser o nome do plug-in externo a ser usado para o estágio scheduling da saída StagedPassManager. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "scheduling" para o argumento stage_name .

  • approximation_degree (float) – Discagem heurística usada para aproximação de circuitos ( 1.0=no approximation, 0.0=maximal approximation).

  • seed_transpiler (int) – Define a semente aleatória para as partes estocásticas do transpilador.

  • 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) – 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 de síntese unitária padrão não requer configuração personalizada. Isso só deve ser necessário quando um plug-in de síntese unitária for especificado com o argumento unitary_synthesis_method . Como isso é personalizado para 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) – Uma classe de configuração opcional HLSConfig que será passada diretamente para a HighLevelSynthesis passagem de transformação. Essa classe de configuração permite especificar, para vários objetos de alto nível, as listas de algoritmos de síntese e seus parâmetros.

  • init_method (str) – O nome do plug-in a ser usado para o estágio init da saída StagedPassManager. Por padrão, um plug-in externo não é usado. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "init" como argumento do nome do estágio.

  • optimization_method (str) – O nome do plug-in a ser usado para o estágio optimization da saída StagedPassManager. Por padrão, um plug-in externo não é usado. Você pode ver uma lista dos plug-ins instalados usando list_stage_plugins() com "optimization" para o argumento stage_name .

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