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)
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
Targetque representa un destino de compilación. Si no se especifican, se deducirán los siguientes atributos a partir de este argumento:coupling_mapybasis_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 tantotargetcomobasis_gatessonNone,basis_gatesse 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:
CouplingMapInstancia- 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.dtse 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.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 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_SEEDo 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 conunitary_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_methodargumento. 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
HLSConfigde configuración opcional que se pasará directamente aHighLevelSynthesisla 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
Subidas
- TranspilerError – si se especifica una base distinta de Clifford+T.
- ValueError – si se pasa un valor no válido para
optimization_level.