qre Pacote

Classes

Application

Um aplicativo define uma classe de problemas de computação quântica juntamente com um método para gerar rastreamentos para instâncias de problema específicas.

Distinguemos entre parâmetros de aplicativo e rastreamento. Os parâmetros do aplicativo definem qual instância específica do aplicativo queremos considerar. Os parâmetros de rastreamento definem como gerar um rastreamento. Eles mudam a maneira específica pela qual resolvemos o problema, mas não o problema em si.

Por exemplo, na cryptanalysis quântica, os parâmetros do aplicativo podem definir o tamanho da chave para um produto RSA prime, enquanto os parâmetros de rastreamento definem qual algoritmo usar para quebrar a criptografia, bem como os parâmetros nela.

Architecture

Classe base abstrata para arquiteturas de hardware quântico.

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

Uma tabela de resultados de estimativa de recursos quânticos.

list[EstimationTableEntry] Estende e fornece colunas configuráveis para exibir dados de estimativa. Por padrão, a tabela inclui qubits, runtime (exibido como um pandas.Timedelta) e colunas de erro . Colunas adicionais podem ser adicionadas ou inseridas com add_column e insert_column.

Inicialize uma tabela de estimativa vazia com colunas padrão.

EstimationTableColumn

Definição de uma única coluna em um EstimationTable.

EstimationTableEntry

Uma única linha em um EstimationTable.

Cada entrada representa um resultado de estimativa ideal do Pareto para uma combinação específica de ISA de rastreamento de aplicativo e arquitetura.

FactoryResult
ISA
ISAContext

Contexto passado por enumeração, mantendo o estado compartilhado.

Inicialize o contexto ISA para a arquitetura fornecida.

ISAQuery

Classe base abstrata para todos os nós na árvore de enumeração ISA.

Os nós de enumeração definem a estrutura do espaço de pesquisa para ISAs a partir de arquiteturas e modificados por transformações ISA, como esquemas de correção de erro. Eles podem ser compostos usando operadores como + (soma) e * (produto) para criar estratégias de enumeração complexas.

ISARefNode

Uma referência a um ISA associado no contexto de enumeração.

Esse nó pesquisa a associação do contexto e produz o ISA associado.

ISARequirements
ISATransform

Classe base abstrata para transformações entre ISAs (por exemplo, esquemas QEC).

Uma transformação ISA define um mapeamento de um ISA de entrada necessário (por exemplo, restrições de arquitetura) para um ISA de saída fornecido (instruções lógicas). Ele dá suporte à enumeração de parâmetros de configuração.

InstructionFrontier
InstructionSource
LatticeSurgery

Transformação de rastreamento de cirurgia de reticência.

Converte um rastreamento em um formulário adequado para estimativa de recursos baseados em reticências de cirurgia.

PSSPC

PSSPC (transformação de rastreamento de computação) baseada em Pauli.

Converte portas de rotação e, opcionalmente, portas CCX em operações baseadas em estado T adequadas para estimativa de recursos de cirurgia de rede.

Trace
TraceQuery

Uma consulta que enumera rastreamentos transformados de um aplicativo.

Uma consulta de rastreamento encadeia uma sequência de transformações de rastreamento, cada uma com argumentos opcionais de palavra-chave para substituir seus domínios de parâmetro padrão.

TraceTransform

Classe base abstrata para transformações de rastreamento.

Funções

block_linear_function

block_linear_function(block_size, slope, offset=None)

Parâmetros

Nome Description
block_size
Obrigatório
slope
Obrigatório
offset
Valor padrão: None

constant_function

constant_function(value)

Parâmetros

Nome Description
value
Obrigatório

constraint

Crie uma restrição de instrução.

constraint(id: int, encoding: Encoding = Encoding.PHYSICAL, *, arity: int | None = 1, error_rate: ConstraintBound | None = None, **kwargs: bool) -> Constraint

Parâmetros

Nome Description
id
Obrigatório
int

A ID da instrução.

encoding

A codificação de instrução. FÍSICO (0) ou LÓGICO (1).

Valor padrão: 0
arity
Obrigatório
<xref:Optional>[int]

O arity de instrução. Se Nenhum, supõe-se que a instrução tenha aridade variável. O padrão é 1.

error_rate
Obrigatório
<xref:Optional>[<xref:ConstraintBound>]

A restrição na taxa de erros.

**kwargs
Obrigatório

Propriedades necessárias que as instruções de correspondência devem ter. Nomes de propriedade válidos: distância. Defina como True para exigir a propriedade.

Parâmetros somente de palavra-chave

Nome Description
arity
Valor padrão: 1
error_rate
Valor padrão: None

Retornos

Tipo Description

A restrição de instrução.

Exceções

Tipo Description

Se um nome de propriedade desconhecido for fornecido em kwargs.

estimate

Estimar os requisitos de recursos para uma determinada instância de aplicativo e arquitetura.

A instância do aplicativo pode retornar vários rastreamentos. Cada um dos rastreamentos é transformado pela consulta de rastreamento, que aplica várias transformações de rastreamento na sequência. Cada transformação pode retornar vários rastreamentos. Da mesma forma, o ISA da arquitetura é transformado pela consulta ISA, que aplica várias transformações ISA em sequência, cada uma delas pode retornar vários ISAs. A estimativa é executada para cada combinação de rastreamento transformado e ISA. Os resultados são coletados em uma EstimativaTable e retornados.

A coleção contém apenas os resultados que são ideais em relação ao número total de qubits e ao runtime total.

Note

A estratégia de poda usada quando use_graph é definida como True (padrão)

filtra instruções ISA comparando seu espaço por instrução, tempo,

e erro de forma independente. No entanto, a contagem total de qubits de um resultado

depende da interação entre o espaço de fábrica e o runtime:

factory_qubits = copia × factory_space em que as cópias são determinadas

por count.div_ceil(runtime/factory_time). Por causa disso, um ISA

instrução que é dominada em métricas por instrução ainda pode

contribuir para um resultado globalmente pareto-ideal (por exemplo, uma fábrica com

tempo maior pode precisar de menos cópias, levando a menos qubits totais). Como um

conseqüência, use_graph=True pode perder alguns resultados que

use_graph=False localizaria. Usar use_graph=False quando a integridade de

a fronteira pareto é necessária.

estimate(application: Application, architecture: Architecture, isa_query: ISAQuery, trace_query: TraceQuery | None = None, *, max_error: float = 1.0, post_process: bool = False, use_graph: bool = True, name: str | None = None) -> EstimationTable

Parâmetros

Nome Description
application
Obrigatório

O aplicativo quântico a ser estimado.

architecture
Obrigatório

A arquitetura quântica de destino.

isa_query
Obrigatório

A consulta ISA para enumerar ISAs da arquitetura.

trace_query

A consulta de rastreamento para enumerar rastreamentos do aplicativo.

Valor padrão: None
max_error
Obrigatório

O erro máximo permitido para os resultados da estimativa.

post_process
Obrigatório

Se for True, use o caminho de estimativa com threads de Python (destinado à lógica pós-processamento futura). Se False (padrão), use o caminho de estimativa paralela do Rust.

use_graph
Obrigatório

Se true (padrão), use o caminho de estimativa rust que cria um grafo de ISAs e poda ISAs subotimais durante a estimativa. Se False, use o caminho de estimativa do Rust que não executa nenhuma poda e simplesmente enumera todos os ISAs para cada rastreamento.

name
Obrigatório
<xref:Optional>[str]

Um nome opcional para a estimativa. Se for dado, isso será adicionado como uma primeira coluna à tabela de resultados para todas as entradas.

Parâmetros somente de palavra-chave

Nome Description
max_error
Valor padrão: 1.0
post_process
Valor padrão: False
use_graph
Valor padrão: True
name
Valor padrão: None

Retornos

Tipo Description

Uma tabela que contém os resultados de estimativa ideais.

generic_function

generic_function(func)

Parâmetros

Nome Description
func
Obrigatório

instruction_name

instruction_name(id)

Parâmetros

Nome Description
id
Obrigatório

linear_function

linear_function(slope)

Parâmetros

Nome Description
slope
Obrigatório

plot_estimates

Resultados de estimativa de plotagem exibindo qubits versus runtime.

Cria um gráfico de dispersão de log-log em que o eixo x mostra o runtime total e o eixo y mostra o número total de qubits físicos.

os dados podem ser um único EstimationTable ou iterável de tabelas. Quando várias tabelas são fornecidas, cada uma é plotada como uma série separada. Se uma tabela tiver um EstimationTable.name (definido por meio do parâmetro de nome ), estimateela será usada como o rótulo de legenda para essa série.

Quando runtime_unit é None (o padrão), o eixo x usa rótulos de escala de unidade de tempo legíveis por humanos que abrangem nanossegundos a séculos. Quando uma cadeia de caracteres de unidade é fornecida (por exemplo "hours"), todos os runtimes são dimensionados para essa unidade e o rótulo do eixo x inclui a unidade enquanto os tiques são números simples.

Valores de runtime_unit com suporte: "ns", "µs" (ou "us"), "ms", "s", , "min", , "hours", , "days", "weeks""months", "years".

plot_estimates(data: EstimationTable | Iterable[EstimationTable], *, runtime_unit: str | None = None, figsize: tuple[float, float] = (15, 8), scatter_args: dict[str, Any] = {'marker': 'x'})

Parâmetros

Nome Description
data
Obrigatório

Uma única EstimationTable ou uma iterável de objetos EstimationTable para plotar.

runtime_unit
Obrigatório

Unidade de tempo opcional para a qual dimensionar o eixo x.

figsize
Obrigatório

Dimensões de figura em polegadas como (width, height).

scatter_args
Obrigatório

Argumentos de palavra-chave adicionais a serem passados ao matplotlib.axes.Axes.scatter plotar os pontos.

Parâmetros somente de palavra-chave

Nome Description
runtime_unit
Valor padrão: None
figsize
Valor padrão: (15, 8)
scatter_args
Valor padrão: {'marker': 'x'}

Retornos

Tipo Description
<xref:matplotlib.figure.Figure>

A figura que contém o gráfico.

Exceções

Tipo Description

Se matplotlib não estiver instalado.

Se todas as tabelas estiverem vazias ou runtime_unit não forem reconhecidas.

property_name

property_name(id)

Parâmetros

Nome Description
id
Obrigatório

property_name_to_key

property_name_to_key(name)

Parâmetros

Nome Description
name
Obrigatório