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