Skip to main content
IBM Quantum Platform

qiskit.transpiler.generate_preset_clifford_t_pass_manager

qiskit.transpiler.generate_preset_clifford_t_pass_manager(optimization_level=2, target=None, basis_gates=None, coupling_map=None, initial_layout=None, approximation_degree=1.0, seed_transpiler=None, unitary_synthesis_method='default', unitary_synthesis_plugin_config=None, hls_config=None, dt=None, qubits_initially_zero=True, rz_synthesis_config=None)

GitHub

StagedPassManagerGenerar un ajuste preestablecido de Clifford+T.

Esta función ofrece una forma práctica de crear un gestor de pasadas predefinido para la compilación de Clifford+T. Recomendamos utilizar esta función en lugar de transpile() o generate_preset_pass_manager() con una base Clifford+T, ya que ofrece argumentos diseñados específicamente para compilaciones Clifford+T.

Las restricciones de destino para la construcción del gestor de pasadas pueden especificarse mediante una Target instancia o mediante restricciones flexibles (basis_gates, coupling_map, o dt).

Si no se especifican las puertas de base (ni mediante target ni mediante basis_gates), las puertas de base se establecerán por defecto en todas las puertas Clifford+T de Qiskit. Ten en cuenta, sin embargo, que si se especifican puertas de base pero estas no representan una base de Clifford+T, se producirá un error.

Ejemplos

Generar y utilizar un gestor de pases sencillo de tipo Clifford+T:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler import generate_preset_clifford_t_pass_manager

qc = QuantumCircuit(1)
qc.rz(2.3579, 0)

pm = generate_preset_clifford_t_pass_manager()
qct = pm.run(qc)

Se pueden configurar varias opciones; consulta la documentación sobre los argumentos para obtener más detalles:

rz_synthesis_config = {
    "rz_synthesis_error": 1e-4,
    "rz_cache_error": 1e-5,
}

basis_gates = ["cx", "s", "sdg", "h", "t", "tdg"]
pm = generate_preset_clifford_t_pass_manager(
    rz_synthesis_config=rz_synthesis_config,
    basis_gates=basis_gates,
    optimization_level=3,
)

Parámetros

  • optimization_level (int) – El nivel de optimización para generar un StagedPassManager «for». Si no se especifica nada, 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 potencialmente mayor.

  • target (Target | None) – El Target que representa un destino de compilación. 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 va a desarrollar (p. ej.: ['cx', 's', 'sx', 't', 'tdg']). Si tanto target como basis_gates son None, basis_gates se establecerá en todas las puertas de Clifford estándar junto con 't' y 'tdg'.

  • coupling_map (CouplingMap |list | None) –

    El grafo dirigido representaba un mapa de acoplamiento. Se admiten varios formatos:

    1. CouplingMap Instancia
    2. La lista debe proporcionarse en forma de matriz de adyacencia, en la que cada entrada especifique todas las interacciones dirigidas de dos qubits que admite el backend; por ejemplo: [[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]
  • dt (float | None) – Tiempo de muestreo objetivo (resolución) en segundos. Si None (por defecto) y se especifica un destino, target.dt se utiliza.

  • initial_layout (Layout |list[int]) – Posición inicial de los qubits virtuales sobre los qubits físicos.

  • 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 una 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 unitario que se va a utilizar. Por defecto 'default' , se utiliza. Puedes ver una lista de los complementos 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 unitario 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.

  • qubits_initially_zero (bool) – Indica si el circuito de entrada se ha inicializado a cero.

  • rz_synthesis_config (dict | None) – Una clase de configuración opcional que se puede utilizar para SynthesizeRZRotations «pass». Especifica cómo sintetizar las rotaciones RZ en el circuito.

Devuelve

El gestor de pases predefinidos para las opciones indicadas.

Tipo de retorno

StagedPassManager

Subidas

  • TranspilerError – si se especifica una base distinta de Clifford+T.
  • 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.