Skip to main content
IBM Quantum Platform

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)

GitHub

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

StagedPassManager

level_1_pass_manager

qiskit.transpiler.preset_passmanagers.level_1_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

level_2_pass_manager

qiskit.transpiler.preset_passmanagers.level_2_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

level_3_pass_manager

qiskit.transpiler.preset_passmanagers.level_3_pass_manager(pass_manager_config)

GitHub

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

StagedPassManager

Conjuntos de bases Clifford+T

clifford_t_pass_manager

qiskit.transpiler.preset_passmanagers.clifford_t_pass_manager(pass_manager_config, optimization_level)

GitHub

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 TT como TT^\dagger 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"]
Nota

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 largo.

Devuelve

Gestor de pases por etapas.

Eleva

TranspilerError - si la configuración del passmanager no es válida.

Tipo de retorno

StagedPassManager


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)

GitHub

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

PassManager

generate_error_on_control_flow

qiskit.transpiler.preset_passmanagers.generate_error_on_control_flow(message)

GitHub

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)

GitHub

Generar un «unroll» >3q PassManager

Parámetros

  • target (Target | None) – el Target objeto 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) – 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.
  • unitary_synthesis_method (str) – El método de síntesis unitario que se debe 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 depende del complemento en cuestión; consulta la documentación del complemento correspondiente para saber cómo utilizarlo.
  • 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 está inicializado a cero.
  • optimization_metric (OptimizationMetric) – el OptimizationMetric objeto que define la métrica utilizada al optimizar el despliegue.

Devuelve

El gestor de pases unroll 3q o más

Tipo de retorno

PassManager

generate_embed_passmanager

qiskit.transpiler.preset_passmanagers.generate_embed_passmanager(coupling_map)

GitHub

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

PassManager

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)

GitHub

Generar una ruta PassManager

Parámetros

  • routing_pass (TransformationPass) – El paso que se encargará del enrutamiento
  • target (Target) – el Target objeto 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 el pase de diseño posterior a vf2. Si es None o 0 no se ejecutará la maquetación del puesto vf2.
  • seed_transpiler (int) – Establece una semilla aleatoria para las partes estocásticas del transpilador. Actualmente, esto solo se utiliza para VF2PostLayout y se recomienda encarecidamente utilizar el valor por defecto de -1 (es decir, sin aleatorización). Si se proporciona un valor de None , este se generará a partir de la entropía del sistema.
  • check_trivial (bool) – Si se establece en «true», esto condicionará la ejecución de VF2PostLayout la pasada tras 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 ejecuta TrivialLayout como 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 BarrierBeforeFinalMeasurements pasada del transpilador se ejecutará antes de la pasada especificada en el routing_pass argumento.
  • vf2_max_trials (int) – El número máximo de pruebas a ejecutar VF2 cuando se evalúa la pasada de maquetación posterior a vf2. Si es None o 0 no se ejecutará la maquetación del puesto vf2.

Devuelve

El gestor de pases de ruta

Tipo de retorno

PassManager

generate_pre_op_passmanager

qiskit.transpiler.preset_passmanagers.generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False)

GitHub

Generar un bucle de preoptimización PassManager

Este gestor de pases comprobará que se respeta la direccionalidad del mapa de acoplamiento.

Obsoleto desde la versión 2.0

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 Target objeto que representa el backend
  • coupling_map (CouplingMap) – El mapa de acoplamiento que se debe utilizar
  • remove_reset_in_zero (bool) – Si True incluir la eliminación de reinicio en cero pase en el generado PassManager

Devuelve

El gestor de pases

Tipo de retorno

PassManager

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)

GitHub

Generar una traducción de referencia PassManager

Parámetros

  • target (Target | None) – el Target objeto 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 traducción base que debe utilizarse
  • 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.
  • 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 unitario que se debe 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 depende del complemento en cuestión; consulta la documentación del complemento correspondiente para saber cómo utilizarlo.
  • 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 está inicializado a cero.

Devuelve

El gestor de pases de traducción base

Tipo de retorno

PassManager

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)

GitHub

Generar una programación de optimización posterior PassManager

Parámetros

  • instruction_durations (dict) – El diccionario de duraciones de instrucción
  • scheduling_method (str) – El método de programación a 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 Target objeto que representa el backend

Devuelve

El gestor de pases de programación

Tipo de retorno

PassManager

Eleva

TranspilerError - Si el kwarg de scheduling_method no es un valor válido

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