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)
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ões | destino | base_portões |
| acoplamento_mapa | destino | acoplamento_mapa |
| dt | destino | dt |
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
StagedPassManagerpara. 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_gatescoupling_map, etarget. Se algum desses outros argumentos for especificado além dobackend, eles terão precedência sobre o valor contido no backend. -
target (Target | None) – O
Targetque representa um destino de compilação de backend. Os seguintes atributos serão inferidos a partir desse argumento, caso não estejam definidos:coupling_mapebasis_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:
CouplingMapinstância- 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
Passa ser utilizado para escolher o posicionamento inicial dos qubits. As opções válidas são'trivial','dense', e'sabre', representandoTrivialLayout,DenseLayouteSabreLayout, respectivamente.StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado nalayoutetapa de saída. Você pode ver uma lista dos plugins instalados usandolist_stage_plugins()com"layout"como argumentostage_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', representandoBasicSwap,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 naroutingetapa de saída. Você pode ver uma lista dos plugins instalados usandolist_stage_plugins()com"routing"como argumentostage_name. -
translation_method (str | None) – O método a ser utilizado para converter portas em portas de base.
'translator'Opções válidas,'synthesis'representandoBasisTranslatoreUnitarySynthesis, respectivamente.StagedPassManagerEsse também pode ser o nome do plug-in externo a ser usado natranslationetapa de saída. Você pode ver uma lista dos plugins instalados usandolist_stage_plugins()com"translation"como argumentostage_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 naschedulingetapa de saída. Você pode ver uma lista dos plugins instalados usandolist_stage_plugins()com"scheduling"como argumentostage_name. -
approximation_degree (float | None) – Botão heurístico utilizado para a aproximação do circuito, em que
1.0significa que não há aproximação (dentro da tolerância numérica) e0.0significa a aproximação máxima. Setargetestiver disponível, um valor deNoneindica 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_SEEDou 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 comunitary_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_methodargumento. 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
HLSConfigde configuração opcional que será passada diretamente paraHighLevelSynthesisa 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 ainitetapa de saída. Por padrão, não é utilizado nenhum plug-in externo. É possível visualizar uma lista dos plugins instalados usandolist_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 aoptimizationetapa de saída. Por padrão, não é utilizado nenhum plug-in externo. Você pode ver uma lista dos plugins instalados usandolist_stage_plugins()com"optimization"como argumentostage_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
Aumentos
ValueError - se for passado um valor inválido para optimization_level .