RoundBasedFactory Classe
Fabrique d’état magique qui produit des instructions de porte T à l’aide de pipelines de distillation basés sur des arrondis.
Cette usine explore les combinaisons d’unités de distillation (telles que « 15 à 1 RM préparation » et « 15 à 1 espace efficace ») pour trouver des configurations optimales qui réduisent le temps et l’espace tout en obtenant des taux d’erreur cibles. Il prend en charge à la fois la fragmentation au niveau physique (lorsque la porte T d’entrée est codée physiquement) et la distillation au niveau logique (à l’aide de la chirurgie de treillis via des codes de surface).
Pour tenir compte de la probabilité de réussite des cycles de distillation, la fabrique modélise le pipeline à l’aide d’une exigence de probabilité d’échec (valeur par défaut de 1%) que chaque tour doit respecter. Le nombre d’unités de distillation par tour est ajusté pour répondre à cette exigence, ce qui affecte à son tour les exigences globales en matière d’espace.
Les besoins en espace sont calculés à l’aide d’une fonction fournie par l’utilisateur qui agrège l’espace par arrondi (par exemple, somme ou max). La sum fonction modélise le cas dans lequel les qubits ne sont pas réutilisés entre les arrondis, tandis que les max modèles de fonction le cas dans lequel les qubits sont réutilisés entre les arrondis.
Pour l’énumération des unités de fragmentation de niveau logique, la fabrique s’appuie sur un utilisateur fourni ISAQuery par l’utilisateur (par défaut SurfaceCode.q()) pour explorer différentes configurations de code de surface et leurs instructions de chirurgie de treillis correspondantes. Celles-ci doivent être fournies par l’utilisateur et ne peuvent pas être dérivées automatiquement de l’ISA d’implémentation fournie, car elles ne peuvent contenir qu’un sous-ensemble des instructions requises. L’utilisateur doit s’assurer que la requête fournie correspond à l’architecture pour laquelle cette fabrique est utilisée.
Les résultats sont mis en cache sur disque pour une efficacité.
Références :
Sergei Bravyi, Alexei Kitaev : Universal Quantum Computation avec des portes Clifford idéales et ancillas bruyantes, arXiv :quant-ph/0403025
Michael E. Beverland, Prakash Murali, Matthias Troyer, Krysta M. Svore, Torsten Hoefler, Vadym Kliuchnikov, Guang Hao Low, Mathias Soeken, Aarthi Sundaram, Alexander Vaschillo : Évaluation des exigences à mettre à l’échelle en avantages quantiques pratiques, arXiv :2211.07629
Constructeur
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)
Paramètres
| Nom | Description |
|---|---|
|
code_query
|
Valeur par défaut: <factory>
|
|
physical_qubit_calculation
|
Valeur par défaut: <built-in function sum>
|
|
cache_dir
|
Valeur par défaut: C:\Users\cloudtest\.cache\re3\round_based
|
|
use_cache
|
Valeur par défaut: True
|
Méthodes
| provided_isa | |
| required_isa |
provided_isa
provided_isa(impl_isa: ISA, ctx: ISAContext) -> Generator[ISA, None, None]
Paramètres
| Nom | Description |
|---|---|
|
impl_isa
Obligatoire
|
|
|
ctx
Obligatoire
|
|
required_isa
static required_isa() -> ISARequirements
Attributs
physical_qubit_calculation
Callable[[Iterable], int] Function to calculate total physical qubits from per round space requirements, par exemple, sum or max. La somme est par défaut.
Paramètres positionnels uniquement
| Nom | Description |
|---|---|
|
iterable
|
|
Paramètres
| Nom | Description |
|---|---|
|
start
|
Valeur par défaut: 0
|
code_query
Requête ISAQuery pour énumérer les codes QEC pour les unités de distillation logique. La valeur par défaut est SurfaceCode.q().
code_query: ISAQuery
cache_dir
Répertoire de chemin d’accès pour la mise en cache des configurations de fabrique calculées. La valeur par défaut est ~/.cache/re3/round_based.
cache_dir: Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based')
use_cache
bool Indique s’il faut utiliser les résultats mis en cache. La valeur par défaut est True.
use_cache: bool = True