Configuración HLS
class qiskit.transpiler.passes.HLSConfig(use_default_on_unspecified=True, plugin_selection='sequential', plugin_evaluation_fn=None, **kwargs)
Bases: object
La configuración de síntesis de alto nivel permite especificar una lista de "métodos" utilizados por HighLevelSynthesis para sintetizar diferentes tipos de objetos de alto nivel.
Un objeto de nivel superior es un objeto de tipo Operation (por ejemplo Clifford o LinearFunction). Cada objeto se designa por su campo name (por ejemplo, "clifford" para los objetos Clifford ), y los métodos de síntesis aplicables están vinculados a este nombre.
En la configuración, cada método se especifica de varias maneras:
- una tupla formada por el nombre de un complemento de síntesis conocido y un diccionario que proporciona argumentos adicionales para el algoritmo.
- una tupla formada por una instancia de
HighLevelSynthesisPluginy argumentos adicionales para el algoritmo. - una única cadena de un plugin de síntesis conocido
- una única instancia de
HighLevelSynthesisPlugin.
El siguiente ejemplo ilustra diferentes formas de crear un archivo de configuración:
from qiskit.transpiler.passes.synthesis.high_level_synthesis import HLSConfig
from qiskit.transpiler.passes.synthesis.high_level_synthesis import ACGSynthesisPermutation
# All the ways to specify hls_config are equivalent
hls_config = HLSConfig(permutation=[("acg", {})])
hls_config = HLSConfig(permutation=["acg"])
hls_config = HLSConfig(permutation=[(ACGSynthesisPermutation(), {})])
hls_config = HLSConfig(permutation=[ACGSynthesisPermutation()])Los nombres de los plugins de síntesis deben declararse en la tabla entry-points para qiskit.synthesis en pyproject.toml, de la forma <higher-level-object-name>. <synthesis-method-name>.
Se recomienda que los objetos estándar de nivel superior tengan un método de síntesis llamado "por defecto", que se llamaría automáticamente al sintetizar estos objetos, sin tener que establecer explícitamente estos métodos en la configuración.
Para evitar sintetizar un determinado objeto de nivel superior, se le puede dar una lista vacía de métodos.
Para ver un ejemplo explícito del uso de estos archivos de configuración, consulte la documentación de HighLevelSynthesis.
Para obtener una descripción general del proceso completo de uso de la síntesis de alto nivel, consulte Complementos de síntesis de alto nivel.
Crea una configuración de síntesis de alto nivel.
Parámetros
- use_default_on_unspecified (bool) – si es True, cada objeto de nivel superior sin una lista de métodos especificada explícitamente se sintetizará utilizando el algoritmo "por defecto" si existe.
- plugin_selection (str) – si se establece en
"sequential"(por defecto), para cada objeto de nivel superior la pasada de síntesis considerará los métodos especificados secuencialmente, deteniéndose en el primer método que sea capaz de sintetizar el objeto. Si se establece en"all", se tendrán en cuenta todos los métodos especificados, y se elegirá el mejor circuito sintetizado, segúnplugin_evaluation_fn. - plugin_evaluation_fn (Callable[[QuantumCircuit], int] | None) – un callable que evalúa la calidad del circuito cuántico sintetizado en el caso de que
plugin_selection="sequential"; un valor menor significa un circuito mejor. SiNone, la calidad del circuito es su tamaño (es decir, el número de puertas que contiene). - kwargs - un diccionario que asigna objetos de nivel superior a listas de métodos de síntesis.
Métodos
set_methods
set_methods(hls_name, hls_methods)
Establece la lista de métodos de síntesis para un objeto de nivel superior determinado. Esto sobrescribe las listas de métodos si también se establecieron previamente.