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 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ões | destino | base_portões |
| acoplamento_mapa | destino | acoplamento_mapa |
| dt | destino | dt |
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
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) – Um objeto de backend opcional que pode ser usado como fonte dos valores padrão para
basis_gates,coupling_mapetarget. Se qualquer um desses outros argumentos for especificado além debackend, eles terão precedência sobre o valor contido no backend. -
target (Target) – O
Targetque 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_mapebasis_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:
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]]
-
dt (float) – Tempo de amostragem (resolução) do backend em segundos. Se
None(padrão) e um backend forem fornecidos,backend.dtserá usado. -
initial_layout (Layout | List[int]) – Posição inicial dos qubits virtuais nos qubits físicos.
-
layout_method (str) – O
Passa ser usado para escolher o posicionamento inicial do qubit. As opções válidas são'trivial','dense', e'sabre', representandoTrivialLayout,DenseLayouteSabreLayoutrespectivamente. Esse também pode ser o nome do plug-in externo a ser usado para o estágiolayoutda saídaStagedPassManager. Você pode ver uma lista dos plug-ins instalados usandolist_stage_plugins()com"layout"para o argumentostage_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'representandoBasicSwap,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ágioroutingda saídaStagedPassManager. Você pode ver uma lista dos plug-ins instalados usandolist_stage_plugins()com"routing"para o argumentostage_name. -
translation_method (str) – O método a ser usado para converter portas em portas de base. Opções válidas
'translator','synthesis'representandoBasisTranslator, eUnitarySynthesisrespectivamente. Esse também pode ser o nome do plug-in externo a ser usado para o estágiotranslationda saídaStagedPassManager. Você pode ver uma lista dos plug-ins instalados usandolist_stage_plugins()com"translation"para o argumentostage_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ágioschedulingda saídaStagedPassManager. Você pode ver uma lista dos plug-ins instalados usandolist_stage_plugins()com"scheduling"para o argumentostage_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 comunitary_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
HLSConfigque será passada diretamente para aHighLevelSynthesispassagem 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
initda saídaStagedPassManager. Por padrão, um plug-in externo não é usado. Você pode ver uma lista dos plug-ins instalados usandolist_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
optimizationda saídaStagedPassManager. Por padrão, um plug-in externo não é usado. Você pode ver uma lista dos plug-ins instalados usandolist_stage_plugins()com"optimization"para o argumentostage_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
Aumentos
ValueError - se for passado um valor inválido para optimization_level .