Skip to main content
IBM Quantum Platform

Configuração do HLS

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

GitHub

Bases: object

A configuração de síntese de alto nível permite especificar uma lista de "métodos" usados pela HighLevelSynthesis para sintetizar diferentes tipos de objetos de nível superior.

Um objeto de nível superior é um objeto do tipo Operation (por exemplo, Clifford ou LinearFunction). Cada objeto é referenciado por seu campo name (por exemplo, "clifford" para objetos Clifford ), e os métodos de síntese aplicáveis são vinculados a esse nome.

Na configuração, cada método é especificado de uma das várias maneiras:

  1. uma tupla que consiste no nome de um plug-in de síntese conhecido e um dicionário que fornece argumentos adicionais para o algoritmo.
  2. uma tupla que consiste em uma instância de HighLevelSynthesisPlugin e argumentos adicionais para o algoritmo.
  3. uma única cadeia de caracteres de um plug-in de síntese conhecido
  4. uma única instância de HighLevelSynthesisPlugin.

O exemplo a seguir ilustra diferentes maneiras de criar um arquivo de configuração:

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

Os nomes dos plug-ins de síntese devem ser declarados na tabela entry-points para qiskit.synthesis em pyproject.toml, no formato <higher-level-object-name>. <synthesis-method-name>.

Recomenda-se que os objetos de nível superior padrão tenham um método de síntese chamado "default", que seria chamado automaticamente ao sintetizar esses objetos, sem a necessidade de definir explicitamente esses métodos na configuração.

Para evitar a síntese de um determinado objeto de nível superior, é possível fornecer a ele uma lista vazia de métodos.

Para obter um exemplo explícito de uso desses arquivos de configuração, consulte a documentação do HighLevelSynthesis.

Para obter uma visão geral do processo completo de uso da síntese de alto nível, consulte Plug-ins de síntese de alto nível.

Cria uma configuração de síntese de alto nível.

Parâmetros

  • use_default_on_unspecified (bool) – se for True, todo objeto de nível superior sem uma lista de métodos explicitamente especificada será sintetizado usando o algoritmo "padrão", se ele existir.
  • plugin_selection (str) – se definido como "sequential" (padrão), para cada objeto de nível superior, a passagem de síntese considerará os métodos especificados sequencialmente, parando no primeiro método capaz de sintetizar o objeto. Se for definido como "all", todos os métodos especificados serão considerados, e o melhor circuito sintetizado, de acordo com plugin_evaluation_fn , será escolhido.
  • plugin_evaluation_fn (Callable[[QuantumCircuit], int] | None) – um chamável que avalia a qualidade do circuito quântico sintetizado no caso de plugin_selection="sequential"; um valor menor significa um circuito melhor. Se None, a qualidade do circuito é o seu tamanho (ou seja, o número de portas que ele contém).
  • kwargs - um dicionário que mapeia objetos de nível superior para listas de métodos de síntese.

Métodos

set_methods

set_methods(hls_name, hls_methods)

GitHub

Define a lista de métodos de síntese para um determinado objeto de nível superior. Isso substitui as listas de métodos, caso também tenham sido definidas anteriormente.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.