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 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:

    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 sobre los qubits físicos.

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

  • approximation_degree (float | None) – Controlador 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 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_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 a utilizar. Por defecto se utiliza 'default' . Puede ver una lista de los plugins 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 unitary_synthesis_method argumento. 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.

  • StagedPassManagerinit_method (str | None) – El nombre del complemento que se debe utilizar para la init etapa de salida. 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.

  • StagedPassManageroptimization_method (str | None) – El nombre del complemento que se debe utilizar para la optimization etapa de salida. Por defecto, no se utiliza ningún complemento externo. Puedes ver una lista de los stage_name plugins instalados utilizando list_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.dt se 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

StagedPassManager

Eleva

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

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