RoundBasedFactory Clase
Una fábrica de estado mágico que genera instrucciones de puerta T mediante canalizaciones de destilación basadas en redondeo.
Esta fábrica explora combinaciones de unidades de destilación (como "15 a 1 RM prep" y "15 a 1 espacio eficiente") para encontrar configuraciones óptimas que minimicen el tiempo y el espacio al lograr tasas de error objetivo. Admite la destilación de nivel físico (cuando la puerta T de entrada está codificada físicamente) y la destilación de nivel lógico (mediante la cirugía de lattice a través de códigos de superficie).
Para tener en cuenta la probabilidad de éxito de las rondas de destilación, la fábrica modela la canalización mediante un requisito de probabilidad de error (de forma predeterminada a 1%) que cada ronda debe cumplir. El número de unidades de destilación por ronda se ajusta para cumplir este requisito, lo que a su vez afecta a los requisitos generales del espacio.
Los requisitos de espacio se calculan mediante una función proporcionada por el usuario que agrega espacio por ronda (por ejemplo, suma o máximo). La sum función modela el caso en el que los cúbits no se reutilizan en las rondas, mientras que la max función modela el caso en el que se reutilizan los cúbits en las rondas.
Para la enumeración de unidades de destilación de nivel lógico, la fábrica se basa en un proporcionado ISAQuery por el usuario (el valor predeterminado es SurfaceCode.q()) para explorar diferentes configuraciones de código expuesta y sus correspondientes instrucciones de cirugía de lattice. El usuario debe proporcionarlos y no se puede derivar automáticamente del ISA de implementación proporcionado, ya que solo puede contener un subconjunto de las instrucciones necesarias. El usuario debe asegurarse de que la consulta proporcionada coincide con la arquitectura para la que se usa esta factoría.
Los resultados se almacenan en caché en el disco para mejorar la eficacia.
Referencias:
Sergio Bravyi, Alexei Kitaev: Cálculo cuántico universal con puertas ideales clifford y ancillas ruidosas, arXiv:quant-ph/0403025
Michael E. Beverland, Prakash Murali, Matthias Troyer, Krysta M. Svore, Torsten Hokasher, Vadym Kliuchnikov, Guang Hao Low, Mathias Soeken, Aarthi Sundaram, Alexander Vaschillo: Evaluación de los requisitos para escalar a la ventaja cuántica práctica, arXiv:2211.07629
Constructor
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)
Parámetros
| Nombre | Description |
|---|---|
|
code_query
|
Valor predeterminado: <factory>
|
|
physical_qubit_calculation
|
Valor predeterminado: <built-in function sum>
|
|
cache_dir
|
Valor predeterminado: C:\Users\cloudtest\.cache\re3\round_based
|
|
use_cache
|
Valor predeterminado: True
|
Métodos
| provided_isa | |
| required_isa |
provided_isa
provided_isa(impl_isa: ISA, ctx: ISAContext) -> Generator[ISA, None, None]
Parámetros
| Nombre | Description |
|---|---|
|
impl_isa
Requerido
|
|
|
ctx
Requerido
|
|
required_isa
static required_isa() -> ISARequirements
Atributos
physical_qubit_calculation
Callable[[Iterable], int] Function para calcular el total de cúbits físicos a partir de los requisitos de espacio por ronda, por ejemplo, suma o máx. El valor predeterminado es sumar.
Parámetros de posición únicamente
| Nombre | Description |
|---|---|
|
iterable
|
|
Parámetros
| Nombre | Description |
|---|---|
|
start
|
Valor predeterminado: 0
|
code_query
Consulta ISAQuery para enumerar códigos QEC para unidades de destilación lógicas. El valor predeterminado es SurfaceCode.q().
code_query: ISAQuery
cache_dir
Directorio de ruta de acceso para almacenar en caché configuraciones de fábrica calculadas. El valor predeterminado es ~/.cache/re3/round_based.
cache_dir: Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based')
use_cache
bool Indica si se deben usar los resultados almacenados en caché. El valor predeterminado es True.
use_cache: bool = True