qre Pacchetto

Classi

Application

Un'applicazione definisce una classe di problemi di calcolo quantistico insieme a un metodo per generare tracce per istanze problematiche specifiche.

Si distingue tra i parametri di applicazione e di traccia. I parametri dell'applicazione definiscono quale particolare istanza dell'applicazione si vuole considerare. I parametri di traccia definiscono come generare una traccia. Essi cambiano il modo specifico in cui risolviamo il problema, ma non il problema stesso.

Ad esempio, nella crittografia quantistica, i parametri dell'applicazione potrebbero definire le dimensioni della chiave per un prodotto RSA prime, mentre i parametri di traccia definiscono l'algoritmo da usare per interrompere la crittografia, nonché i parametri presenti.

Architecture

Classe di base astratta per le architetture hardware quantistiche.

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

Tabella dei risultati della stima delle risorse quantistica.

Estende list[EstimationTableEntry] e fornisce colonne configurabili per la visualizzazione dei dati di stima. Per impostazione predefinita, la tabella include qubit, runtime (visualizzato come pandas.Timedelta) e colonne di errore . È possibile aggiungere o inserire colonne aggiuntive con add_column e insert_column.

Inizializzare una tabella di stima vuota con le colonne predefinite.

EstimationTableColumn

Definizione di una singola colonna in un oggetto EstimationTable.

EstimationTableEntry

Una singola riga in un oggetto EstimationTable.

Ogni voce rappresenta un risultato di stima ottimale di Pareto per una particolare combinazione di traccia dell'applicazione e ISA dell'architettura.

FactoryResult
ISA
ISAContext

Contesto passato attraverso l'enumerazione, mantenendo lo stato condiviso.

Inizializzare il contesto ISA per l'architettura specificata.

ISAQuery

Classe base astratta per tutti i nodi nell'albero di enumerazione ISA.

I nodi di enumerazione definiscono la struttura dello spazio di ricerca per isa a partire dalle architetture e modificati dalle trasformazioni ISA, ad esempio gli schemi di correzione degli errori. Possono essere composti usando operatori come + (somma) e * (prodotto) per creare strategie di enumerazione complesse.

ISARefNode

Riferimento a un ISA associato nel contesto di enumerazione.

Questo nodo cerca l'associazione dal contesto e restituisce l'ISA associato.

ISARequirements
ISATransform

Classe base astratta per le trasformazioni tra isa (ad esempio, schemi QEC).

Una trasformazione ISA definisce un mapping da un ISA di input obbligatorio (ad esempio, vincoli di architettura) a un ISA di output fornito (istruzioni logiche). Supporta l'enumerazione dei parametri di configurazione.

InstructionFrontier
InstructionSource
LatticeSurgery

Trasformazione della traccia della chirurgia reticolare.

Converte una traccia in una forma adatta per la stima delle risorse basate su reticolo-chirurgia.

PSSPC

Trasformazione della traccia di calcolo basata su Pauli (PSSPC).

Converte i cancelli di rotazione e facoltativamente i cancelli CCX in operazioni basate sullo stato T adatte per la stima delle risorse di chirurgia reticolare.

Trace
TraceQuery

Query che enumera le tracce trasformate da un'applicazione.

Una query di traccia concatena una sequenza di trasformazioni di traccia, ognuna con argomenti di parole chiave facoltativi per eseguire l'override dei domini dei parametri predefiniti.

TraceTransform

Classe base astratta per le trasformazioni di traccia.

Funzioni

block_linear_function

block_linear_function(block_size, slope, offset=None)

Parametri

Nome Descrizione
block_size
Necessario
slope
Necessario
offset
Valore predefinito: None

constant_function

constant_function(value)

Parametri

Nome Descrizione
value
Necessario

constraint

Creare un vincolo di istruzione.

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

Parametri

Nome Descrizione
id
Necessario
int

ID istruzione.

encoding

Codifica dell'istruzione. FISICO (0) o LOGICO (1).

Valore predefinito: 0
arity
Necessario
<xref:Optional>[int]

L'arità dell'istruzione. Se None, si presuppone che l'istruzione abbia un'arità variabile. Il valore predefinito è 1.

error_rate
Necessario
<xref:Optional>[<xref:ConstraintBound>]

Vincolo sulla frequenza di errore.

**kwargs
Necessario

Le proprietà necessarie che corrispondono alle istruzioni devono avere. Nomi di proprietà validi: distanza. Impostare su True per richiedere la proprietà .

Parametri di sole parole chiave

Nome Descrizione
arity
Valore predefinito: 1
error_rate
Valore predefinito: None

Valori restituiti

Tipo Descrizione

Vincolo di istruzione.

Eccezioni

Tipo Descrizione

Se in kwargs viene specificato un nome di proprietà sconosciuto.

estimate

Stimare i requisiti delle risorse per un'istanza e un'architettura dell'applicazione specificati.

L'istanza dell'applicazione potrebbe restituire più tracce. Ognuna delle tracce viene trasformata dalla query di traccia, che applica diverse trasformazioni di traccia in sequenza. Ogni trasformazione può restituire più tracce. Analogamente, l'ISA dell'architettura viene trasformata dalla query ISA, che applica diverse trasformazioni ISA in sequenza, ognuna delle quali può restituire più ISA. La stima viene eseguita per ogni combinazione di traccia trasformata e ISA. I risultati vengono raccolti in un oggetto EstimationTable e restituiti.

La raccolta contiene solo i risultati ottimali rispetto al numero totale di qubit e al runtime totale.

Annotazioni

La strategia di eliminazione usata quando use_graph è impostata su True (impostazione predefinita)

filtra le istruzioni ISA confrontando lo spazio per istruzione, il tempo,

e l'errore in modo indipendente. Tuttavia, il numero totale di qubit di un risultato

dipende dall'interazione tra lo spazio factory e il runtime:

factory_qubits = copie × factory_space in cui vengono determinate le copie

per count.div_ceil(runtime/factory_time). Per questo motivo, un ISA

l'istruzione che è dominata sulle metriche per istruzione può ancora

contribuire a un risultato ottimale a livello globale (ad esempio, una fabbrica con

un tempo maggiore potrebbe richiedere meno copie, con un minor numero di qubit totali. Come un

conseguenza, use_graph=True può perdere alcuni risultati che

use_graph=False troverebbe. Usare use_graph=False quando l'completezza di

la frontiera Pareto è obbligatoria.

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

Parametri

Nome Descrizione
application
Necessario

Applicazione quantistica da stimare.

architecture
Necessario

Architettura quantistica di destinazione.

isa_query
Necessario

Query ISA per enumerare isa dall'architettura.

trace_query

Query di traccia per enumerare le tracce dall'applicazione.

Valore predefinito: None
max_error
Necessario

Errore massimo consentito per i risultati della stima.

post_process
Necessario

Se True, usare il percorso di stima a thread Python (destinato alla logica di post-elaborazione futura). Se False (impostazione predefinita), usare il percorso di stima parallela rust.

use_graph
Necessario

Se True (impostazione predefinita), usare il percorso di stima rust che compila un grafico di ISA e elimina isa non ottimali durante la stima. Se False, usare il percorso di stima Rust che non esegue alcuna eliminazione ed enumera semplicemente tutti gli ISA per ogni traccia.

name
Necessario
<xref:Optional>[str]

Nome facoltativo per la stima. Se specificato, verrà aggiunto come prima colonna alla tabella dei risultati per tutte le voci.

Parametri di sole parole chiave

Nome Descrizione
max_error
Valore predefinito: 1.0
post_process
Valore predefinito: False
use_graph
Valore predefinito: True
name
Valore predefinito: None

Valori restituiti

Tipo Descrizione

Tabella contenente i risultati della stima ottimale.

generic_function

generic_function(func)

Parametri

Nome Descrizione
func
Necessario

instruction_name

instruction_name(id)

Parametri

Nome Descrizione
id
Necessario

linear_function

linear_function(slope)

Parametri

Nome Descrizione
slope
Necessario

plot_estimates

Risultati della stima del tracciato che visualizzano qubit e runtime.

Crea un grafico a dispersione log-log in cui l'asse x mostra il runtime totale e l'asse y mostra il numero totale di qubit fisici.

i dati possono essere singoli EstimationTable o iterabili di tabelle. Quando vengono fornite più tabelle, ognuna viene tracciata come serie separata. Se una tabella ha un EstimationTable.name oggetto (impostato tramite il parametro name di estimate), viene usato come etichetta di legenda per tale serie.

Quando runtime_unit è None (impostazione predefinita), l'asse x usa etichette di graduazione temporizzato leggibile che si estendono su nanosecondi a secoli. Quando viene specificata una stringa di unità (ad esempio "hours"), tutti i runtime vengono ridimensionati in tale unità e l'etichetta dell'asse x include l'unità mentre i tick sono numeri semplici.

Valori supportati runtime_unit: "ns", "µs" (o "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'})

Parametri

Nome Descrizione
data
Necessario

Una singola oggetto EstimationTable o iterabile di oggetti EstimationTable da tracciare.

runtime_unit
Necessario

Unità di tempo facoltativa in cui ridimensionare l'asse x.

figsize
Necessario

Dimensioni della figura in pollici come (width, height).

scatter_args
Necessario

Argomenti di parole chiave aggiuntivi da passare a matplotlib.axes.Axes.scatter quando si tracciano i punti.

Parametri di sole parole chiave

Nome Descrizione
runtime_unit
Valore predefinito: None
figsize
Valore predefinito: (15, 8)
scatter_args
Valore predefinito: {'marker': 'x'}

Valori restituiti

Tipo Descrizione
<xref:matplotlib.figure.Figure>

Figura contenente il tracciato.

Eccezioni

Tipo Descrizione

Se matplotlib non è installato.

Se tutte le tabelle sono vuote o runtime_unit non vengono riconosciute.

property_name

property_name(id)

Parametri

Nome Descrizione
id
Necessario

property_name_to_key

property_name_to_key(name)

Parametri

Nome Descrizione
name
Necessario