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

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_gatesdestinobasis_gates
mapa_de_acoplamientodestinomapa_de_acoplamiento
dtdestinodt
Nota

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 StagedPassManager para. 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_gates coupling_map, y target. Si se especifica alguno de esos otros argumentos además de backend este, tendrán prioridad sobre el valor contenido en el backend.

  • target (Target | None) – El Target que representa un destino de compilación del backend. Si no se especifican, se deducirán los siguientes atributos a partir de este argumento: coupling_map y basis_gates.

  • basis_gates (list[str] | None) – Lista de nombres de puertas básicas a las que se va a desarrollar (p. ej.: ['u1', 'u2', 'u3', 'cx']).

  • coupling_map (CouplingMap |list | None) –

    El grafo dirigido representa un mapa de acoplamiento. Se admiten varios formatos:

    1. CouplingMap Instancia
    2. 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 en los qubits físicos.

  • layout_method (str | None) – El Pass que se debe utilizar para elegir la ubicación inicial de los qubits. Las opciones válidas son 'trivial', 'dense', y 'sabre', que representan TrivialLayout, DenseLayout y, respectivamente SabreLayout . También puede ser el nombre del complemento externo que se utilizará en la etapa layout de salida StagedPassManager. Puedes ver una lista de los plugins instalados utilizando list_stage_plugins() con "layout" como argumento stage_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, que representan 'none' BasicSwap, LookaheadSwap, SabreSwap, y un error si se requiere enrutamiento, respectivamente. También puede ser el nombre del complemento externo que se utilizará en la etapa routing de salida StagedPassManager. Puedes ver una lista de los plugins instalados utilizando list_stage_plugins() con "routing" como argumento stage_name .

  • translation_method (str | None) – El método que se debe utilizar para convertir las puertas en puertas de base. Opciones válidas 'translator', que 'synthesis' representan BasisTranslator, y, respectivamente UnitarySynthesis . También puede ser el nombre del complemento externo que se utilizará en la etapa translation de salida StagedPassManager. Puedes ver una lista de los plugins instalados utilizando list_stage_plugins() con "translation" como argumento stage_name .

  • scheduling_method (str | None) – El paso que se debe utilizar para programar instrucciones. Las opciones válidas son 'alap' y 'asap'. También puede ser el nombre del complemento externo que se utilizará en la etapa scheduling de salida StagedPassManager. Puedes ver una lista de los plugins instalados utilizando list_stage_plugins() con "scheduling" como argumento stage_name .

  • approximation_degree (float | None) – Dial heurístico utilizado para la aproximación de circuitos, donde 1.0 significa que no hay aproximación (dentro de la tolerancia numérica) y 0.0 significa la aproximación máxima. Si target está disponible, un valor de None indica que se permite la aproximación hasta la tasa de error indicada para una operación en el destino.

  • seed_transpiler (int | None) – Establece la 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_SEED o 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 que se va a utilizar. Por defecto, 'default' se utiliza. Puedes ver una lista de los complementos instalados con unitary_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 argumento unitary_synthesis_method . 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 HLSConfig de configuración opcional que se pasará directamente a HighLevelSynthesis la 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.

  • init_method (str | None) – El nombre del complemento que se debe utilizar para la etapa init de salida StagedPassManager. Por defecto, no se utiliza ningún complemento externo. Puedes ver una lista de los complementos instalados utilizando list_stage_plugins() con "init" como argumento del nombre de la etapa.

  • optimization_method (str | None) – El nombre del complemento que se debe utilizar para la etapa optimization de salida StagedPassManager. Por defecto, no se utiliza ningún complemento externo. Puedes ver una lista de los plugins instalados utilizando list_stage_plugins() con "optimization" como argumento stage_name .

  • dt (float | None) – Tiempo de muestreo (resolución) del backend en segundos. Si ( None por defecto) y se proporciona un backend, backend.dt se utiliza.

  • qubits_initially_zero (bool) – Indica si el circuito de entrada se inicializa a cero.

Devuelve

El gestor de pases predefinido para las opciones dadas

Tipo de retorno

StagedPassManager

Eleva

ValueError : si se optimization_level pasa un valor no válido para.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.