Skip to main content
IBM Quantum Platform

HLSConfig

class qiskit.transpiler.passes.HLSConfig(use_default_on_unspecified=True, plugin_selection='sequential', plugin_evaluation_fn=None, **kwargs)

GitHub

Bases : object

La configuration de la synthèse de haut niveau permet de spécifier une liste de "méthodes" utilisées par la passe de transformation pour synthétiser différents types d'objets de haut niveau HighLevelSynthesis pour synthétiser différents types d'objets de haut niveau.

Un objet de niveau supérieur est un objet de type Operation (par exemple, Clifford ou LinearFunction). Chaque objet est désigné par son champ name (par exemple, "clifford" pour les objets Clifford ), et les méthodes de synthèse applicables sont liées à ce nom.

Dans la configuration, chaque méthode est spécifiée de plusieurs manières :

  1. un tuple composé du nom d'un plugin de synthèse connu et d'un dictionnaire fournissant des arguments supplémentaires pour l'algorithme.
  2. un tuple composé d'une instance de HighLevelSynthesisPlugin et d'arguments supplémentaires pour l'algorithme.
  3. une chaîne unique d'un plugin de synthèse connu
  4. une seule instance de HighLevelSynthesisPlugin.

L'exemple suivant illustre différentes façons de créer un fichier de configuration :

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()])

Les noms des modules de synthèse doivent être déclarés dans le tableau entry-points pour qiskit.synthesis dans pyproject.toml, sous la forme <higher-level-object-name>. <synthesis-method-name>.

Il est recommandé de doter les objets standard de niveau supérieur d'une méthode de synthèse appelée "default", qui serait appelée automatiquement lors de la synthèse de ces objets, sans qu'il soit nécessaire de définir explicitement ces méthodes dans la configuration.

Pour éviter de synthétiser un objet de niveau supérieur donné, on peut lui donner une liste vide de méthodes.

Pour un exemple explicite d'utilisation de tels fichiers de configuration, voir la documentation de HighLevelSynthesis.

Pour obtenir une vue d'ensemble du processus complet de synthèse de haut niveau, consultez la section « Plug-ins de synthèse de haut niveau ».

Crée une configuration de synthèse de haut niveau.

Paramètres

  • use_default_on_unspecified (bool) – si True, chaque objet de niveau supérieur sans liste de méthodes explicitement spécifiée sera synthétisé en utilisant l'algorithme "par défaut" s'il existe.
  • plugin_selection (str) – si la valeur est "sequential" (par défaut), pour chaque objet de niveau supérieur, la passe de synthèse considérera les méthodes spécifiées de manière séquentielle, en s'arrêtant à la première méthode capable de synthétiser l'objet. Si la valeur est fixée à "all", toutes les méthodes spécifiées seront prises en compte et le meilleur circuit synthétisé, selon plugin_evaluation_fn , sera choisi.
  • plugin_evaluation_fn (Callable[[QuantumCircuit], int] | None) – une fonction qui évalue la qualité du circuit quantique synthétisé dans le cas où plugin_selection="all"; une valeur plus faible indique un meilleur circuit. Si None, la qualité du circuit dépend de sa taille (c'est-à-dire du nombre de portes qu'il contient).
  • kwargs - un dictionnaire associant des objets de niveau supérieur à des listes de méthodes de synthèse.

Méthodes

set_methods

set_methods(hls_name, hls_methods)

GitHub

Définit la liste des méthodes de synthèse pour un objet de niveau supérieur donné. Cela écrase les listes de méthodes si elles ont été définies précédemment.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.