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

Basi: object

La configurazione della sintesi di alto livello consente di specificare un elenco di "metodi" usati dal HighLevelSynthesis per sintetizzare diversi tipi di oggetti di livello superiore.

Un oggetto di livello superiore è un oggetto di tipo Operation (ad esempio, Clifford o LinearFunction). Ogni oggetto è indicato dal suo campo name (ad esempio, "clifford" per gli oggetti Clifford ) e i metodi di sintesi applicabili sono legati a questo nome.

Nella configurazione, ogni metodo è specificato in uno dei seguenti modi:

  1. una tupla composta dal nome di un plugin di sintesi noto e da un dizionario che fornisce argomenti aggiuntivi per l'algoritmo.
  2. una tupla composta da un'istanza di HighLevelSynthesisPlugin e da argomenti aggiuntivi per l'algoritmo.
  3. una singola stringa di un plugin di sintesi noto
  4. una singola istanza di HighLevelSynthesisPlugin.

L'esempio seguente illustra i diversi modi in cui può essere creato un file di configurazione:

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

I nomi dei plugin di sintesi devono essere dichiarati nella tabella entry-points per qiskit.synthesis in pyproject.toml, nella forma <higher-level-object-name>. <synthesis-method-name>.

Si raccomanda che gli oggetti standard di livello superiore abbiano un metodo di sintesi chiamato "default", che verrebbe richiamato automaticamente quando si sintetizzano questi oggetti, senza dover impostare esplicitamente questi metodi nella configurazione.

Per evitare di sintetizzare un dato oggetto di livello superiore, si può assegnargli un elenco vuoto di metodi.

Per un esempio esplicito di utilizzo di tali file di configurazione, si faccia riferimento alla documentazione di HighLevelSynthesis.

Per una panoramica completa sul processo di utilizzo della sintesi di alto livello, consultare la sezione "Plugin per la sintesi di alto livello".

Crea una configurazione ad alto livello di sintesi.

Parametri

  • use_default_on_unspecified (bool) – se True, ogni oggetto di livello superiore senza un elenco di metodi esplicitamente specificato sarà sintetizzato usando l'algoritmo "predefinito", se esiste.
  • plugin_selection (str) – se impostato su "sequential" (valore predefinito), per ogni oggetto di livello superiore il passaggio di sintesi prenderà in considerazione i metodi specificati in modo sequenziale, fermandosi al primo metodo in grado di sintetizzare l'oggetto. Se impostato su "all", verranno considerati tutti i metodi specificati e verrà scelto il miglior circuito sintetizzato, secondo plugin_evaluation_fn .
  • plugin_evaluation_fn (Callable[[QuantumCircuit], int] | None) – una funzione che valuta la qualità del circuito quantistico sintetizzato nel caso in cui plugin_selection="all"; un valore più basso indica un circuito migliore. Se None, la qualità del circuito è data dalle sue dimensioni (ovvero dal numero di porte che contiene).
  • kwargs - un dizionario che mappa gli oggetti di livello superiore in elenchi di metodi di sintesi.

Metodi

set_methods

set_methods(hls_name, hls_methods)

GitHub

Imposta l'elenco dei metodi di sintesi per un determinato oggetto di livello superiore. Questo sovrascrive gli elenchi di metodi se impostati in precedenza.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.