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 predefinido. Los gestores de pases predefinidos son los gestores de pases por defecto utilizados por la transpile() función. Esta función proporciona un método cómodo y sencillo para construir un objeto independiente PassManager independiente que refleja lo que la función transpile() construye 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 de transpilador Clifford+T especializada; consulta clifford_t_pass_manager() para obtener más información. En este flujo se ignoran los argumentos que se aplican a la transpilación a conjuntos de bases continuas.
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) – Un objeto backend opcional que se puede utilizar como fuente de los valores por defecto para
basis_gates,coupling_map, ytarget. Si se especifica cualquiera de esos otros argumentos además debackend, tendrán prioridad sobre el valor contenido en el backend. -
target (Target) – La dirección
Targetque representa un objetivo de compilación backend. Los siguientes atributos se deducirán de este argumento si no están definidos:coupling_mapybasis_gates. -
basis_gates (list) – Lista de nombres de puertas de base a las que desenrollar (por ejemplo:
['u1', 'u2', 'u3', 'cx']). -
coupling_map (CouplingMap orlist) –
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]]
-
dt (float) – Tiempo de muestreo del backend (resolución) en segundos. Si se proporciona
None(por defecto) y un backend, se utilizabackend.dt. -
initial_layout (Layout | List[int]) – Posición inicial de los qubits virtuales en los qubits físicos.
-
layout_method (str) – La dirección
Passque se utilizará para elegir la ubicación inicial de los qubits. Las opciones válidas son'trivial','dense', y'sabre', que representanTrivialLayout,DenseLayoutySabreLayoutrespectivamente. Este también puede ser el nombre del plugin externo a utilizar para la etapalayoutde la salidaStagedPassManager. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"layout"como argumentostage_name. -
routing_method (str) – El pase a utilizar para el enrutamiento de qubits en la arquitectura. Las opciones válidas son
'basic','lookahead','sabre', y'none'que representanBasicSwap,LookaheadSwap,SabreSwapy error si se requiere enrutamiento respectivamente. Este también puede ser el nombre del plugin externo a utilizar para la etaparoutingde la salidaStagedPassManager. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"routing"como argumentostage_name. -
translation_method (str) – El método que hay que utilizar para convertir las puertas en puertas base. Opciones válidas
'translator','synthesis'representandoBasisTranslatoryUnitarySynthesisrespectivamente. Este también puede ser el nombre del plugin externo a utilizar para la etapatranslationde la salidaStagedPassManager. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"translation"como argumentostage_name. -
scheduling_method (str) – El pase que se utilizará para programar las instrucciones. Las opciones válidas son
'alap'y'asap'. Este también puede ser el nombre del plugin externo a utilizar para la etapaschedulingde la salidaStagedPassManager. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"scheduling"como argumentostage_name. -
approximation_degree (float) – Dial heurístico utilizado para la aproximación de circuitos ( 1.0=no approximation, 0.0=maximal approximation).
-
seed_transpiler (int) – Establece la semilla aleatoria para las partes estocásticas del transpilador.
-
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) – Un diccionario de configuración opcional que se pasará directamente al plugin de síntesis unitaria. Por defecto esta configuración no tendrá ningún efecto ya que el método de síntesis unitaria por defecto no toma configuración personalizada. Esto sólo debería ser necesario cuando se especifica un complemento de síntesis unitaria con el argumento
unitary_synthesis_method. Como esto es personalizado para cada plugin de síntesis unitaria, consulte la documentación del plugin para saber cómo utilizar esta opción. -
hls_config (HLSConfig) – Una clase de configuración opcional
HLSConfigque se pasará directamente aHighLevelSynthesispase de transformación. Esta clase de configuración permite especificar para varios objetos de alto nivel las listas de algoritmos de síntesis y sus parámetros. -
init_method (str) – El nombre del plugin a utilizar para la etapa
initde la salidaStagedPassManager. Por defecto no se utiliza un plugin externo. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"init"como argumento para el nombre del escenario. -
optimization_method (str) – El nombre del plugin a utilizar para la etapa
optimizationde la salidaStagedPassManager. Por defecto no se utiliza un plugin externo. Puede ver una lista de los plugins instalados utilizandolist_stage_plugins()con"optimization"como argumentostage_name. -
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 .