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

Basen: object

Die High-Level-Synthesekonfiguration ermöglicht die Angabe einer Liste von "Methoden", die von HighLevelSynthesis transformationspass verwendet werden, um verschiedene Typen von Objekten höherer Ebene zu synthetisieren.

Ein übergeordnetes Objekt ist ein Objekt des Typs Operation (z.B., Clifford oder LinearFunction). Auf jedes Objekt wird durch sein name feld (z.B. "clifford" für Clifford objekte), und die anwendbaren Synthesemethoden sind an diesen Namen gebunden.

In der Konfiguration wird jede Methode auf eine von mehreren Arten angegeben:

  1. ein Tupel bestehend aus dem Namen eines bekannten Synthese-Plugins und einem Wörterbuch mit zusätzlichen Argumenten für den Algorithmus.
  2. ein Tupel bestehend aus einer Instanz von HighLevelSynthesisPlugin und zusätzlichen Argumenten für den Algorithmus besteht.
  3. eine einzelne Zeichenfolge eines bekannten Synthese-Plugins
  4. eine einzige Instanz von HighLevelSynthesisPlugin.

Das folgende Beispiel veranschaulicht verschiedene Möglichkeiten, wie eine Konfigurationsdatei erstellt werden kann:

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

Die Namen der Synthese-Plugins sollten in der Tabelle entry-points für qiskit.synthesis in pyproject.toml deklariert werden, in der Form <higher-level-object-name>. <synthesis-method-name>.

Für die standardmäßigen Higher-Level-Objekte wird eine Synthesemethode namens "default" empfohlen, die bei der Synthese dieser Objekte automatisch aufgerufen wird, ohne dass diese Methoden in der Konfiguration explizit gesetzt werden müssen.

Um zu vermeiden, dass ein gegebenes Higher-Level-Objekt synthetisiert wird, kann man ihm eine leere Liste von Methoden geben.

Ein explizites Beispiel für die Verwendung solcher Konfigurationsdateien finden Sie in der Dokumentation zu HighLevelSynthesis.

Einen Überblick über den gesamten Prozess der High-Level-Synthese finden Sie unter „High-Level-Synthese-Plugins “.

Erzeugt eine High-Level-Synthese-Konfiguration.

Parameter

  • use_default_on_unspecified (bool) – wenn True, wird jedes Higher-Level-Objekt ohne explizit angegebene Methodenliste unter Verwendung des "Standard"-Algorithmus synthetisiert, sofern dieser existiert.
  • plugin_selection (str) – wenn auf "sequential" gesetzt (Voreinstellung), werden für jedes Higher-Level-Objekt die angegebenen Methoden der Reihe nach betrachtet, wobei bei der ersten Methode, die das Objekt synthetisieren kann, angehalten wird. Bei der Einstellung "all" werden alle angegebenen Methoden berücksichtigt, und die beste synthetisierte Schaltung gemäß plugin_evaluation_fn wird ausgewählt.
  • plugin_evaluation_fn (Callable[[QuantumCircuit], int] | None) – eine Callable-Funktion, die die Qualität der synthetisierten Quantenschaltung im Fall von … bewertet plugin_selection="all"; ein kleinerer Wert steht für eine bessere Schaltung. Wenn None…, dann hängt die Qualität der Schaltung von ihrer Größe ab (d. h. von der Anzahl der darin enthaltenen Logikgatter).
  • kwargs - ein Wörterbuch, das Higher-Level-Objekte auf Listen von Synthesemethoden abbildet.

Methoden

set_methods

set_methods(hls_name, hls_methods)

GitHub

Legt die Liste der Synthesemethoden für ein bestimmtes übergeordnetes Objekt fest. Damit wird die Liste der Methoden überschrieben, falls diese zuvor ebenfalls festgelegt wurde.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.