Configuração do HLS
class qiskit.transpiler.passes.HLSConfig(use_default_on_unspecified=True, plugin_selection='sequential', plugin_evaluation_fn=None, **kwargs)
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:
- 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.
- uma tupla que consiste em uma instância de
HighLevelSynthesisPlugine argumentos adicionais para o algoritmo. - uma única cadeia de caracteres de um plug-in de síntese conhecido
- 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 complugin_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. SeNone, 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)
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.