RoundBasedFactory Classe
Fabbrica di stati magici che produce istruzioni di controllo T usando pipeline distillazione basate su round.
Questa fabbrica esplora le combinazioni di unità di esportazione (ad esempio "preparazione da 15 a 1 RM" e "15-a-1 spazio efficiente") per trovare configurazioni ottimali che riducono al minimo il tempo e lo spazio durante il raggiungimento delle percentuali di errore di destinazione. Supporta sia la convalida a livello fisico (quando il cancello T di input è codificato fisicamente) che la convalida a livello logico (utilizzando la chirurgia reticolare tramite codici di superficie).
Per tenere conto della probabilità di successo degli arrotondamenti di indicizzazione, la factory modella la pipeline usando un requisito di probabilità di errore (che per impostazione predefinita è 1%) che ogni round deve soddisfare. Il numero di unità di temperatura per round viene regolato per soddisfare questo requisito, che a sua volta influisce sui requisiti di spazio complessivi.
I requisiti di spazio vengono calcolati usando una funzione fornita dall'utente che aggrega lo spazio per round (ad esempio, somma o max). La sum funzione modella il caso in cui i qubit non vengono riutilizzati tra round, mentre la funzione modella il max caso in cui i qubit vengono riutilizzati tra round.
Per l'enumerazione di unità di formattazione a livello logico, la fabbrica si basa su un oggetto fornito ISAQuery dall'utente (per impostazione predefinita SurfaceCode.q()) per esplorare diverse configurazioni del codice di superficie e le corrispondenti istruzioni di chirurgia reticolare. Questi elementi devono essere forniti dall'utente e non possono essere derivati automaticamente dall'isa di implementazione fornita, perché possono contenere solo un subset delle istruzioni necessarie. L'utente deve assicurarsi che la query fornita corrisponda all'architettura per cui viene usata questa factory.
I risultati vengono memorizzati nella cache su disco per garantire l'efficienza.
Riferimenti:
Sergei Bravyi, Alexei Kitaev: Calcolo quantistico universale con porte clifford ideali e ancilla rumorose, arXiv:quant-ph/0403025
Michael E. Beverland, Prakash Murali, Matthias Troyer, Krysta M. Svore, Torsten Hoefler, Vadym Kliuchnikov, Raggruppa Hao Low, Mathias Soeken, Aarthi Sundaram, Alexander Vaschillo: Valutazione dei requisiti per la scalabilità al vantaggio quantistico pratico, arXiv:2211.07629
Costruttore
RoundBasedFactory(code_query: ~qdk.qre._isa_enumeration.ISAQuery = <factory>, physical_qubit_calculation: ~typing.Callable[[~typing.Iterable], int] = <built-in function sum>, cache_dir: ~pathlib.Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based'), use_cache: bool = True)
Parametri
| Nome | Descrizione |
|---|---|
|
code_query
|
Valore predefinito: <factory>
|
|
physical_qubit_calculation
|
Valore predefinito: <built-in function sum>
|
|
cache_dir
|
Valore predefinito: C:\Users\cloudtest\.cache\re3\round_based
|
|
use_cache
|
Valore predefinito: True
|
Metodi
| provided_isa | |
| required_isa |
provided_isa
provided_isa(impl_isa: ISA, ctx: ISAContext) -> Generator[ISA, None, None]
Parametri
| Nome | Descrizione |
|---|---|
|
impl_isa
Necessario
|
|
|
ctx
Necessario
|
|
required_isa
static required_isa() -> ISARequirements
Attributi
physical_qubit_calculation
Funzione callable[[Iterable], int] per calcolare i qubit fisici totali da requisiti di spazio per round, ad esempio somma o max. Il valore predefinito è sum.
Parametri posizionali
| Nome | Descrizione |
|---|---|
|
iterable
|
|
Parametri
| Nome | Descrizione |
|---|---|
|
start
|
Valore predefinito: 0
|
code_query
Query ISAQuery per enumerare i codici QEC per le unità di codifica logica. Il valore predefinito è SurfaceCode.q().
code_query: ISAQuery
cache_dir
Directory percorso per la memorizzazione nella cache delle configurazioni di factory calcolate. Il valore predefinito è ~/.cache/re3/round_based.
cache_dir: Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based')
use_cache
bool Indica se usare i risultati memorizzati nella cache. Il valore predefinito è True.
use_cache: bool = True