Gestores de contraseñas preconfigurados
qiskit.transpiler.preset_passmanagers
Este módulo contiene funciones para generar los gestores de pasadas predefinidas para el transpilador. Los gestores de pasadas predefinidos son instancias de StagedPassManager que se utilizan para ejecutar las transformaciones de circuitos como parte del compilador de Qiskit dentro de la transpile() función en los distintos niveles de optimización, aunque también pueden utilizarse de forma independiente. La funcionalidad se divide aquí en dos partes. El primero incluye las funciones utilizadas para generar el gestor de pasadas completo, que se utiliza en transpile() ( Generación de gestores de pasadas predefinidas de bajo nivel ), y el segundo incluye funciones que se utilizan para construir (ya sea en su totalidad o en parte) las etapas que componen los gestores de pasadas predefinidas ( Funciones del generador de etapas ).
Generación de administrador de pases preestablecidos de bajo nivel
Conjuntos de bases continuas
level_0_pass_manager
qiskit.transpiler.preset_passmanagers.level_0_pass_manager(pass_manager_config)
Gestor de pases de nivel 0: sin optimización explícita aparte de la asignación al backend.
Este gestor de pases aplica la disposición inicial dada por el usuario. Si no se indica ninguno, se utiliza una disposición trivial que consiste en asignar el qubit virtual i-ésimo al qubit físico i-ésimo. Cualquier qubit físico no utilizado se asigna como espacio ancilla.
A continuación, el gestor de pases desenrolla el circuito hasta la base deseada y lo transforma para que coincida con el mapa de acoplamiento.
Parámetros
pass_manager_config (PassManagerConfig) – Configuración del gestor de contraseñas.
Devuelve
un gestor de pases de nivel 0.
Eleva
TranspilerError - si la configuración del passmanager no es válida.
Tipo de retorno
level_1_pass_manager
qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)
Gestor de pases de nivel 1: optimización de la luz mediante el simple colapso de puertas adyacentes.
Este gestor de pases aplica la disposición inicial dada por el usuario. Si no se da ninguno, y un diseño trivial (i-ésimo virtual -> i-ésimo físico) hace que el circuito se ajuste al mapa de acoplamiento, se utiliza ese. De lo contrario, el circuito se mapea en el subgrafo de acoplamiento más densamente conectado, y se insertan intercambios para mapear. Cualquier qubit físico no utilizado se asigna como espacio ancilla. A continuación, el gestor de pases desenrolla el circuito hasta la base deseada y lo transforma para que coincida con el mapa de acoplamiento. Por último, se realizan optimizaciones en forma de colapso de puertas adyacentes y eliminación de reinicios redundantes.
Parámetros
pass_manager_config (PassManagerConfig) – Configuración del gestor de contraseñas.
Devuelve
un gestor de aprobados de nivel 1.
Eleva
TranspilerError - si la configuración del passmanager no es válida.
Tipo de retorno
level_2_pass_manager
qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)
Gestor de pases de nivel 2: optimización media mediante la selección del trazado inicial y la cancelación de puertas utilizando reglas de conmutatividad.
Este gestor de pases aplica la disposición inicial dada por el usuario. Si no se da ninguna, se busca una disposición perfecta (es decir, que satisfaga todas las interacciones de 2 qubits). Si no se encuentra tal disposición, los qubits se colocan en el subconjunto más densamente conectado que también presente las mejores fidelidades de puerta.
A continuación, el gestor de pases transforma el circuito para adaptarlo a las restricciones de acoplamiento. A continuación, se desenrolla a la base y se fijan las direcciones cx invertidas. Por último, se realizan optimizaciones en forma de cancelación de puertas conmutativas y eliminación de reinicios redundantes.
Parámetros
pass_manager_config (PassManagerConfig) – Configuración del gestor de contraseñas.
Devuelve
un gestor de aprobados de nivel 2.
Eleva
TranspilerError - si la configuración del passmanager no es válida.
Tipo de retorno
level_3_pass_manager
qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)
Gestor de pases de nivel 3: optimización pesada mediante mapeo de qubits adaptable al ruido y cancelación de compuertas mediante reglas de conmutatividad y síntesis unitaria.
Este gestor de pases aplica la disposición inicial dada por el usuario. Si no se da ninguna, se busca una disposición perfecta (es decir, que satisfaga todas las interacciones de 2 qubits). Si no se encuentra tal disposición, y se dispone de información sobre la calibración del dispositivo, el circuito se asigna a los qubits con mejores lecturas y a las compuertas CX con mayor fidelidad.
A continuación, el gestor de pases transforma el circuito para adaptarlo a las restricciones de acoplamiento. A continuación, se desenrolla a la base y se fijan las direcciones cx invertidas. Por último, se llevan a cabo optimizaciones en forma de cancelación de compuertas conmutativas, resíntesis de bloques unitarios de dos qubits, eliminación de reinicios redundantes y mejoras finales del diseño.
Parámetros
pass_manager_config (PassManagerConfig) – Configuración del gestor de contraseñas.
Devuelve
un gestor de aprobados de nivel 3.
Eleva
TranspilerError - si la configuración del passmanager no es válida.
Tipo de retorno
Conjuntos de bases Clifford+T
clifford_t_pass_manager
qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)
Generar un gestor de pasos por etapas para la transpilación a la base Clifford+T.
Esta función se invoca cuando generate_preset_pass_manager() la base de destino está formada por puertas Clifford+T. Genera un proceso de transpilación especializado que consta de las siguientes etapas:
- Inicialización: Descomponer las puertas más grandes en puertas de 1 y 2 qubits y realizar optimizaciones lógicas.
- Diseño: Aplica la estrategia de diseño predeterminada utilizada para conjuntos de bases continuos.
- Enrutamiento: aplica la estrategia de enrutamiento predeterminada utilizada para los conjuntos de bases continuas.
- Traducción RZ: Traduce el circuito a la base Clifford+RZ.
- Optimización RZ: Optimiza el circuito en la base Clifford+RZ.
- Traducción de T: Traduce el circuito a la base de Clifford+T.
- Optimización T: optimiza el circuito en la base Clifford+T.
- Programación: aplica la estrategia de programación predeterminada que se utiliza para los conjuntos de bases continuos.
Para obtener los mejores resultados, te recomendamos que incluyas tanto como en la base Clifford+T especificada, así como tantas puertas de Clifford como sea posible. Por ejemplo:
basis_gates = get_clifford_gate_names() + ["t", "tdg"]Estas fases aún se encuentran en fase experimental y están sujetas a cambios. En concreto, aún no están disponibles como complementos de la etapa del transpilador (a diferencia de las etapas para los conjuntos de bases continuas).
Parámetros
- pass_manager_config (PassManagerCliffordTConfig) – Configuración del gestor de pases.
- optimization_level (int) – El nivel de optimización. Si no se especifica, se utiliza por defecto el nivel de optimización 2. Puede ser 0, 1, 2 o 3. Los niveles más altos generan circuitos potencialmente más optimizados, a costa de un tiempo de transpilación más prolongado.
Devuelve
Gestor de pases por etapas.
Eleva
TranspilerError - si la configuración del passmanager no es válida.
Tipo de retorno
Funciones del generador de etapas
generate_control_flow_options_check
qiskit.transpiler.preset_passmanagers.generate_control_flow_options_check(layout_method=None, routing_method=None, translation_method=None, optimization_method=None, scheduling_method=None, basis_gates=(), target=None)
Generar un gestor de pases que, cuando se ejecuta en un DAG que contiene flujo de control, falla con un mensaje de error que explica las opciones no válidas, y lo que se podría utilizar en su lugar.
Devuelve
un gestor de pasadas que rellena las propiedades de contains_x para cada una de las operaciones de flujo de control, y genera un error si alguna de las opciones dadas no soporta flujo de control, pero se da un circuito con flujo de control.
Tipo de retorno
generate_error_on_control_flow
qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)
Obtener un gestor de pasadas que siempre genere un error si hay flujo de control en un circuito dado.
generate_unroll_3q
qiskit.transpiler.preset_passmanagers.generate_unroll_3q(target, basis_gates=None, approximation_degree=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True, optimization_metric=OptimizationMetric.COUNT_2Q, optimization_level=2)
Generar un «unroll» >3q PassManager
Parámetros
- target (Target | None) – el
Targetobjeto que representa el backend - basis_gates (list[str] | None) – Una lista de nombres de puertas «str» que representan las puertas básicas en el destino del backend.
- approximation_degree (float | None) – Dial 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. - unitary_synthesis_method (str) – El método de síntesis unitaria que se va a utilizar. Puedes ver una lista de los complementos instalados con
unitary_synthesis_plugin_names(). - unitary_synthesis_plugin_config (dict | None) – La configuración opcional del complemento de diccionario; se trata de una configuración específica del complemento, por lo que debes consultar la documentación del complemento en cuestión para saber cómo utilizarla.
- hls_config (HLSConfig | None) – Una clase de configuración opcional que se puede utilizar para
HighLevelSynthesis«pass». Especifica cómo sintetizar diversos objetos de alto nivel. - qubits_initially_zero (bool) – Indica si el circuito de entrada se inicializa a cero.
- optimization_metric (OptimizationMetric) – el
OptimizationMetricobjeto que define la métrica utilizada al optimizar el despliegue. - optimization_level (int) – El nivel de optimización que se debe utilizar para el desenrollado, en caso de que haya varios algoritmos de desenrollado disponibles. Los niveles más altos generan circuitos potencialmente más optimizados, a costa de un tiempo de transpilación más prolongado.
Devuelve
El gestor de pases unroll 3q o más
Tipo de retorno
generate_embed_passmanager
qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)
Generar una incrustación de diseño PassManager
Esto se utiliza para generar un PassManager objeto que permite ampliar y aplicar una disposición inicial a un circuito
Parámetros
coupling_map (Union[CouplingMap, Target]) – El mapa de acoplamiento del backend en el que se va a integrar el circuito.
Devuelve
La incrustación passmanager que asume la propiedad de diseño
se ha fijado en etapas anteriores
Tipo de retorno
generate_routing_passmanager
qiskit.transpiler.preset_passmanagers.generate_routing_passmanager(routing_pass, target, coupling_map=None, vf2_call_limit=None, seed_transpiler=-1, check_trivial=False, use_barrier_before_measurement=True, vf2_max_trials=None)
Generar una ruta PassManager
Parámetros
- routing_pass (TransformationPass) – El paso que se encargará del enrutamiento
- target (Target) – el
Targetobjeto que representa el backend - coupling_map (CouplingMap) – El mapa de enlace del backend para la ruta hacia
- vf2_call_limit (int) – El límite de llamadas internas para la pasada de maquetación « vf2 ». Si se trata de o
None0el diseño de entrada « vf2 » no se ejecutará. - seed_transpiler (int) – Establece la semilla aleatoria para las partes estocásticas del transpilador. Actualmente, esto solo se utiliza para
VF2PostLayouty-1se recomienda encarecidamente utilizar el valor por defecto de (es decir, sin aleatorización). SiNonese proporciona un valor de, este se utilizará como semilla a partir de la entropía del sistema. - check_trivial (bool) – Si se establece en «true», esto condicionará la ejecución de la pasada
VF2PostLayouttras el enrutamiento en función de si se ha probado una disposición trivial y se ha comprobado que no es perfecta. Esto solo es necesario si el gestor de pasadas creado se ejecutaTrivialLayoutcomo primer intento de diseño y lo utiliza si se trata de un diseño perfecto (como ocurre con el gestor de pasadas predefinido de nivel 1). - use_barrier_before_measurement (bool) – Si es verdadero (valor por defecto), la pasada del transpilador
BarrierBeforeFinalMeasurementsse ejecutará antes de la pasada especificada en el argumentorouting_pass. - vf2_max_trials (int) – El número máximo de intentos para ejecutar VF2 al evaluar la pasada de diseño posterior vf2. Si se trata de
Noneo0el diseño de entrada « vf2 » no se ejecutará.
Devuelve
El gestor de pases de ruta
Tipo de retorno
generate_pre_op_passmanager
qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)
Generar un bucle de preoptimización PassManager
Este gestor de pases comprobará que se respeta la direccionalidad del mapa de acoplamiento.
La función qiskit.transpiler.preset_passmanagers.common.generate_pre_op_passmanager() está obsoleta a partir de Qiskit 2.0. Se eliminará en Qiskit 3.0. Ahora los plugins de traducción deben respetar la direccionalidad ISA, por lo que normalmente no es necesario sustituirlos.
Parámetros
- target (Target) – el
Targetobjeto que representa el backend - coupling_map (CouplingMap) – El mapa de acoplamiento que se debe utilizar
- remove_reset_in_zero (bool) – Si se incluye
Trueel restablecimiento de «remove» en la pasada cero en el PassManager generado
Devuelve
El gestor de pases
Tipo de retorno
generate_translation_passmanager
qiskit.transpiler.preset_passmanagers.generate_translation_passmanager(target, basis_gates=None, method='translator', approximation_degree=None, coupling_map=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, qubits_initially_zero=True)
Generar una traducción de referencia PassManager
Parámetros
- target (Target | None) – el
Targetobjeto que representa el backend - basis_gates (list[str] | None) – Una lista de nombres de puertas «str» que representan las puertas básicas en el destino del backend
- method (str) – El método de traslación de bases que se debe utilizar
- approximation_degree (float | None) – Dial 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. - coupling_map (CouplingMap | None) – el mapa de acoplamiento del backend en caso de que la síntesis se realice en un circuito físico. Se tendrá en cuenta la direccionalidad de «coupling_map» si «pulse_optimize» es True/None y «natural_direction» es True/None.
- unitary_synthesis_method (str) – El método de síntesis unitaria que se va a utilizar. Puedes ver una lista de los complementos instalados con
unitary_synthesis_plugin_names(). - unitary_synthesis_plugin_config (dict | None) – La configuración opcional del complemento de diccionario; se trata de una configuración específica del complemento, por lo que debes consultar la documentación del complemento en cuestión para saber cómo utilizarla.
- hls_config (HLSConfig | None) – Una clase de configuración opcional que se puede utilizar para
HighLevelSynthesis«pass». Especifica cómo sintetizar diversos objetos de alto nivel. - qubits_initially_zero (bool) – Indica si el circuito de entrada se inicializa a cero.
Devuelve
El gestor de pases de traducción base
Tipo de retorno
Eleva
TranspilerError - Si el kwarg de method no es un valor válido
generate_scheduling
qiskit.transpiler.preset_passmanagers.generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None)
Generar una programación de optimización posterior PassManager
Parámetros
- instruction_durations (dict) – El diccionario de duraciones de las clases
- scheduling_method (str) – El método de programación que se debe utilizar puede ser
'asap'/'as_soon_as_possible'o'alap'/'as_late_as_possible' - timing_constraints (TimingConstraints) – Restricciones de alineación temporal del hardware.
- target (Target) – El
Targetobjeto que representa el backend
Devuelve
El gestor de pases de programación
Tipo de retorno
Eleva
TranspilerError - Si el kwarg de scheduling_method no es un valor válido