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 pases predefinidos para el transpilador. Los gestores de pases predefinidos son instancias de StagedPassManager que se utilizan para ejecutar las transformaciones del circuito como parte del compilador de Qiskit dentro de la función transpile() en los diferentes niveles de optimización, pero también se pueden utilizar de forma independiente. La funcionalidad se divide en dos partes. El primero incluye las funciones utilizadas para generar el gestor de pases completo, que es utilizado por transpile() ( Generación de gestores de pases preestablecidos de bajo nivel ), y el segundo incluye funciones que se utilizan para construir (ya sea total o parcialmente) las etapas que componen los gestores de pases preestablecidos ( Funciones de 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 pases.

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

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

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

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 conjuntos de bases continuas). Además, este gestor de pasadas ignora los campos que pass_manager_config se aplican a la transpilación en un conjunto de bases continuo.

Parámetros

  • pass_manager_config (PassManagerConfig) – 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 rollo >3q PassManager

Parámetros

  • target (Target) – el objeto Target objeto que representa el backend
  • basis_gates (list) – Una lista de nombres de puertas str que representan las puertas base en el objetivo backend
  • approximation_degree (Optional[float]) – El grado de aproximación heurística a utilizar. Puede estar entre 0 y 1.
  • unitary_synthesis_method (str) – El método de síntesis unitaria a utilizar. Puede ver una lista de los plugins instalados con unitary_synthesis_plugin_names().
  • unitary_synthesis_plugin_config (dict) – La configuración opcional del plugin del diccionario es específica del plugin, consulte la documentación del plugin especificado para saber cómo utilizarla.
  • hls_config (HLSConfig) – Una clase de configuración opcional para HighLevelSynthesis pasar. Especifica cómo sintetizar varios 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 desarrollo.

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 que se puede utilizar para ampliar y aplicar un diseño inicial a un circuito

Parámetros

coupling_map (Union[CouplingMap, Target]) – El mapa de acoplamiento en el que el backend debe 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 hoja de ruta PassManager

Parámetros

  • routing_pass (TransformationPass) – El pase que realizará el enrutamiento
  • target (Target) – el objeto Target objeto que representa el backend
  • coupling_map (CouplingMap) – El mapa de acoplamiento del backend para enrutar
  • 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 la semilla aleatoria para las partes estocásticas del transpilador. Actualmente sólo se utiliza para VF2PostLayout y se recomienda encarecidamente el valor predeterminado de -1 (que es sin aleatorización). Si se proporciona un valor de None se sembrará a partir de la entropía del sistema.
  • check_trivial (bool) – Si se establece en true condicionará la ejecución de la VF2PostLayout después del enrutamiento en función de si se probó un diseño trivial y se encontró que no era perfecto. Esto sólo es necesario si el gestor de pases construido se ejecuta TrivialLayout como primer intento de trazado y lo utiliza si es un trazado perfecto (como es el caso del gestor de pases prefijado de nivel 1).
  • use_barrier_before_measurement (bool) – Si es verdadero (por defecto), el BarrierBeforeFinalMeasurements se ejecutará antes que la especificada en el argumento routing_pass .
  • 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 objeto Target objeto que representa el backend
  • coupling_map (CouplingMap) – El mapa de acoplamiento que debe utilizarse
  • 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 base PassManager

Parámetros

  • target (Target) – el objeto Target objeto que representa el backend
  • basis_gates (list) – Una lista de nombres de puertas str que representan las puertas base en el objetivo backend
  • method (str) – El método de traducción base que debe utilizarse
  • approximation_degree (Optional[float]) – El grado de aproximación heurística a utilizar. Puede estar entre 0 y 1.
  • coupling_map (CouplingMap) – el mapa de acoplamiento del backend en caso de que la síntesis se realice en un circuito físico. La direccionalidad del mapa de acoplamiento se tendrá en cuenta si pulse\optimize es True/None y natural\direction es True/None.
  • unitary_synthesis_plugin_config (dict) – La configuración opcional del plugin del diccionario es específica del plugin, consulte la documentación del plugin especificado para saber cómo utilizarla.
  • unitary_synthesis_method (str) – El método de síntesis unitaria a utilizar. Puede ver una lista de los plugins instalados con unitary_synthesis_plugin_names().
  • hls_config (HLSConfig) – Una clase de configuración opcional para HighLevelSynthesis pasar. Especifica cómo sintetizar varios 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 de puestos 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 objeto Target 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.