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)
Generar un preajuste PassManager
Esta función se utiliza para generar rápidamente un gestor de pases preconfigurado. Los gestores de pases predefinidos son los gestores de pases predeterminados que utiliza la transpile() función. Esta función ofrece un método sencillo y práctico para crear un objeto independiente PassManager que reproduce lo que la transpile() función genera y utiliza internamente.
Las restricciones de destino para la construcción del gestor de pases pueden especificarse a través de una Target instancia, una BackendV2 instancia, o mediante restricciones sueltas (basis_gates, coupling_map, o dt). El orden de prioridades de las restricciones objetivo funciona de la siguiente manera: si se proporciona una entrada target , tendrá prioridad sobre cualquier entrada backend o restricciones sueltas. Si se proporciona un backend junto con cualquier restricción no vinculante de la lista anterior, la restricción no vinculante tendrá prioridad sobre la restricción backend correspondiente. Este comportamiento se resume en la tabla siguiente. La primera columna de la tabla resume las posibles restricciones proporcionadas por el usuario, y cada celda muestra si la prioridad se asigna a esa entrada de restricción específica o a otra entrada (objetivo/backend( V1 )/backend( V2 )).
Proporcionado por el usuario | destino | backend( V2 ) |
|---|---|---|
| basis_gates | destino | basis_gates |
| mapa_de_acoplamiento | destino | mapa_de_acoplamiento |
| dt | destino | dt |
Cuando la base de destino está formada por puertas Clifford+T, esta función construye una cadena de procesamiento especializada de transpilador Clifford+T; consulta generate_preset_clifford_t_pass_manager() para obtener documentación más detallada. En este flujo se ignoran los argumentos que solo se aplican a la transpilación a conjuntos de bases continuas. Por ejemplo, el "unitary_synthesis_method" no se tiene en cuenta al sintetizar operadores unitarios de un solo qubit en una secuencia Clifford+T.
Parámetros
-
optimization_level (int) –
El nivel de optimización para generar un
StagedPassManagerpara. Si no se especifica, se utiliza por defecto el nivel de optimización 2. Puede ser 0, 1, 2 ó 3. Los niveles más altos generan circuitos potencialmente más optimizados, a costa de un mayor tiempo de transpilación:- 0: sin optimización
- 1: optimización de la luz
- 2: optimización pesada
- 3: optimización aún mayor
-
backend (Backend | None) – Un objeto de fondo opcional que puede utilizarse como fuente de los valores por defecto para,
basis_gatescoupling_map, ytarget. Si se especifica alguno de esos otros argumentos además debackendeste, tendrán prioridad sobre el valor contenido en el backend. -
target (Target | None) – El
Targetque representa un destino de compilación del backend. Si no se especifican, se deducirán los siguientes atributos a partir de este argumento:coupling_mapybasis_gates. -
basis_gates (list[str] | None) – Lista de nombres de puertas básicas a las que se debe realizar el desenrollado (p. ej.:
['u1', 'u2', 'u3', 'cx']). -
coupling_map (CouplingMap |list | None) –
El grafo dirigido representa un mapa de acoplamiento. Se admiten varios formatos:
CouplingMapInstancia- List, debe darse como una matriz de adyacencia, donde cada entrada especifica todas las interacciones dirigidas de dos qubits soportadas por el backend, p.e:
[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
-
initial_layout (Layout |list[int]) – Posición inicial de los qubits virtuales sobre los qubits físicos.
-
layout_method (str | None) – El método
Passque se utilizará para elegir la ubicación inicial de los qubits. Las opciones válidas son'trivial','dense', y'sabre', que representanTrivialLayout,DenseLayoutySabreLayoutrespectivamente.StagedPassManagerTambién puede ser el nombre del complemento externo que se utilizará en lalayoutetapa de salida. Puedes ver una lista de los complementos instalados utilizandolist_stage_plugins()con"layout"como argumentostage_name. -
routing_method (str | None) – El paso que se debe utilizar para enrutar los qubits en la arquitectura. Las opciones válidas son
'basic','lookahead','sabre', y'none', que representanBasicSwap,LookaheadSwap,SabreSwap, y «error» si se requiere enrutamiento, respectivamente.StagedPassManagerTambién puede ser el nombre del complemento externo que se utilizará en laroutingetapa de salida. Puedes ver una lista de los complementos instalados utilizandolist_stage_plugins()con"routing"como argumentostage_name. -
translation_method (str | None) – El método que hay que utilizar para convertir las puertas en puertas de base.
BasisTranslator'translator'Opciones válidas,'synthesis'que representan, yUnitarySynthesis, respectivamente.StagedPassManagerTambién puede ser el nombre del complemento externo que se utilizará en latranslationetapa de salida. Puedes ver una lista de losstage_nameplugins instalados utilizandolist_stage_plugins()con"translation"como argumento. -
scheduling_method (str | None) – El pase que hay que utilizar para programar las clases. Las opciones válidas son
'alap'y'asap'.StagedPassManagerTambién puede ser el nombre del complemento externo que se utilizará en laschedulingetapa de salida. Puedes ver una lista de losstage_nameplugins instalados utilizandolist_stage_plugins()con"scheduling"como argumento. -
approximation_degree (float | None) – Controlador heurístico utilizado para la aproximación de circuitos, donde
1.0significa que no hay aproximación (dentro de la tolerancia numérica) y0.0significa la aproximación máxima. Sitargetestá disponible, un valor deNoneindica que se permite la aproximación hasta la tasa de error indicada para una operación en el destino. -
seed_transpiler (int | None) – Establece una semilla aleatoria para las partes estocásticas del transpilador. Si no se especifica aquí, también se puede indicar mediante una variable de entorno:
QISKIT_TRANSPILER_SEEDo en un archivo de configuración de usuario. El orden de prioridad es el siguiente: este argumento, después la variable de entorno y, por último, la opción de configuración del usuario. Por lo tanto, al establecer este parámetro, tendrá prioridad sobre los demás métodos para establecer una semilla. -
unitary_synthesis_method (str) – El nombre del método de síntesis unitaria a utilizar. Por defecto se utiliza
'default'. Puede ver una lista de los plugins instalados conunitary_synthesis_plugin_names(). -
unitary_synthesis_plugin_config (dict | None) – Un diccionario de configuración opcional que se pasará directamente al complemento de síntesis unitaria. Por defecto, este ajuste no tendrá ningún efecto, ya que el método de síntesis unitario predeterminado no admite configuraciones personalizadas. Esto solo debería ser necesario cuando se especifica un complemento de síntesis unitaria con el
unitary_synthesis_methodargumento. Dado que esto varía según cada complemento de síntesis unitaria, consulta la documentación del complemento para saber cómo utilizar esta opción. -
hls_config (HLSConfig | None) – Una clase
HLSConfigde configuración opcional que se pasará directamente aHighLevelSynthesisla fase de transformación. Esta clase de configuración permite especificar, para diversos objetos de alto nivel, las listas de algoritmos de síntesis y sus parámetros. -
StagedPassManagerinit_method (str | None) – El nombre del complemento que se debe utilizar para lainitetapa de salida. Por defecto, no se utiliza ningún complemento externo. Puedes ver una lista de los complementos instalados utilizandolist_stage_plugins()con"init"como argumento del nombre de la etapa. -
StagedPassManageroptimization_method (str | None) – El nombre del complemento que se debe utilizar para laoptimizationetapa de salida. Por defecto, no se utiliza ningún complemento externo. Puedes ver una lista de losstage_nameplugins instalados utilizandolist_stage_plugins()con"optimization"como argumento. -
dt (float | None) – Tiempo de muestreo (resolución) del backend en segundos. Si
None(por defecto) y se especifica un backend,backend.dtse utiliza. -
qubits_initially_zero (bool) – Indica si el circuito de entrada está inicializado a cero.
Devuelve
El gestor de pases predefinido para las opciones dadas
Tipo de retorno
Eleva
ValueError - si se pasa un valor no válido para optimization_level .