qre Paquete

Clases

Application

Una aplicación define una clase de problemas de cálculo cuántico junto con un método para generar seguimientos para instancias de problemas específicas.

Se distinguen entre los parámetros de aplicación y seguimiento. Los parámetros de la aplicación definen qué instancia concreta de la aplicación queremos tener en cuenta. Los parámetros de seguimiento definen cómo generar un seguimiento. Cambian la manera específica en la que se resuelve el problema, pero no el propio problema.

Por ejemplo, en el cryptanalysis cuántico, los parámetros de la aplicación podrían definir el tamaño de clave para un producto principal RSA, mientras que los parámetros de seguimiento definen qué algoritmo usar para interrumpir la criptografía, así como los parámetros que contiene.

Architecture

Clase base abstracta para arquitecturas de hardware cuántico.

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

Tabla de resultados de estimación de recursos cuánticos.

Extiende y proporciona columnas configurables list[EstimationTableEntry] para mostrar datos de estimación. De forma predeterminada, la tabla incluye cúbits, tiempo de ejecución (que se muestra como una pandas.Timedelta) y columnas de error . Se pueden agregar o insertar columnas adicionales con add_column y insert_column.

Inicialice una tabla de estimación vacía con columnas predeterminadas.

EstimationTableColumn

Definición de una sola columna en .EstimationTable

EstimationTableEntry

Una sola fila de .EstimationTable

Cada entrada representa un resultado de estimación óptimo de Pareto para una combinación determinada de seguimiento de aplicaciones e ISA de arquitectura.

FactoryResult
ISA
ISAContext

Contexto pasado a través de la enumeración, manteniendo el estado compartido.

Inicialice el contexto de ISA para la arquitectura especificada.

ISAQuery

Clase base abstracta para todos los nodos del árbol de enumeración ISA.

Los nodos de enumeración definen la estructura del espacio de búsqueda de ISA a partir de arquitecturas y modificadas por transformaciones isa, como esquemas de corrección de errores. Se pueden componer mediante operadores como + (suma) y * (producto) para crear estrategias de enumeración complejas.

ISARefNode

Referencia a un ISA enlazado en el contexto de enumeración.

Este nodo busca el enlace desde el contexto y produce el ISA enlazado.

ISARequirements
ISATransform

Clase base abstracta para transformaciones entre ISA (por ejemplo, esquemas QEC).

Una transformación ISA define una asignación de un ISA de entrada necesario (por ejemplo, restricciones de arquitectura) a un ISA de salida proporcionado (instrucciones lógicas). Admite la enumeración de parámetros de configuración.

InstructionFrontier
InstructionSource
LatticeSurgery

Transformación de seguimiento de la cirugía lattice.

Convierte un seguimiento en un formulario adecuado para la estimación de recursos basada en lattice-cirugía.

PSSPC

Transformación de seguimiento de cálculo basado en Pauli (PSSPC).

Convierte puertas de rotación y, opcionalmente, puertas CCX en operaciones basadas en estado T adecuadas para la estimación de recursos de cirugía de lattice.

Trace
TraceQuery

Consulta que enumera los seguimientos transformados de una aplicación.

Una consulta de seguimiento encadena una secuencia de transformaciones de seguimiento, cada una con argumentos de palabra clave opcionales para invalidar sus dominios de parámetro predeterminados.

TraceTransform

Clase base abstracta para transformaciones de seguimiento.

Funciones

block_linear_function

block_linear_function(block_size, slope, offset=None)

Parámetros

Nombre Description
block_size
Requerido
slope
Requerido
offset
Valor predeterminado: None

constant_function

constant_function(value)

Parámetros

Nombre Description
value
Requerido

constraint

Cree una restricción de instrucción.

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

Parámetros

Nombre Description
id
Requerido
int

Identificador de instrucción.

encoding

Codificación de instrucciones. FÍSICO (0) o LÓGICO (1).

Valor predeterminado: 0
arity
Requerido
<xref:Optional>[int]

La aridad de instrucciones. Si No, se supone que la instrucción tiene aridad variable. El valor predeterminado es 1.

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

Restricción en la tasa de errores.

**kwargs
Requerido

Las propiedades necesarias que coincidan deben tener las instrucciones. Nombres de propiedad válidos: distancia. Establézcalo en True para requerir la propiedad .

Parámetros de palabra clave únicamente

Nombre Description
arity
Valor predeterminado: 1
error_rate
Valor predeterminado: None

Devoluciones

Tipo Description

Restricción de instrucción.

Excepciones

Tipo Description

Si se proporciona un nombre de propiedad desconocido en kwargs.

estimate

Calcule los requisitos de recursos de una determinada instancia de aplicación y arquitectura.

La instancia de aplicación puede devolver varios seguimientos. Cada uno de los seguimientos se transforma mediante la consulta de seguimiento, que aplica varias transformaciones de seguimiento en secuencia. Cada transformación puede devolver varios seguimientos. Del mismo modo, el ISA de la arquitectura se transforma mediante la consulta ISA, que aplica varias transformaciones ISA en secuencia, cada una de las cuales puede devolver varios ISA. La estimación se realiza para cada combinación de seguimiento transformado e ISA. Los resultados se recopilan en una Tabla de estimación y se devuelven.

La colección solo contiene los resultados óptimos con respecto al número total de cúbits y el tiempo de ejecución total.

Note

La estrategia de eliminación que se usa cuando use_graph se establece en True (valor predeterminado)

filtra las instrucciones de ISA comparando su espacio por instrucción, tiempo,

y error de forma independiente. Sin embargo, el recuento total de cúbits de un resultado

depende de la interacción entre el espacio de fábrica y el tiempo de ejecución:

factory_qubits = copias × factory_space donde se determinan las copias

by count.div_ceil(runtime/factory_time). Debido a esto, un ISA

las instrucciones que se dominan en las métricas por instrucción todavía pueden seguir

contribuir a un resultado globalmente óptimo (por ejemplo, una fábrica con

más tiempo puede necesitar menos copias, lo que conduce a menos cúbits totales). Como

consecuencia, use_graph=True puede perder algunos resultados que

use_graph=False encontraría. Use use_graph=False cuando se completa

se requiere la frontera de Pareto.

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

Parámetros

Nombre Description
application
Requerido

Aplicación cuántica que se va a calcular.

architecture
Requerido

Arquitectura cuántica de destino.

isa_query
Requerido

Consulta ISA para enumerar isas de la arquitectura.

trace_query

Consulta de seguimiento para enumerar seguimientos de la aplicación.

Valor predeterminado: None
max_error
Requerido

Error máximo permitido para los resultados de estimación.

post_process
Requerido

Si es True, use la ruta de acceso de estimación Python subproceso (pensada para la lógica posterior al procesamiento futuro). Si es False (valor predeterminado), use la ruta de acceso de estimación paralela de Rust.

use_graph
Requerido

Si es True (valor predeterminado), use la ruta de estimación de Rust que crea un gráfico de ISA y elimina isas poco óptimas durante la estimación. Si es False, use la ruta de estimación de Rust que no realiza ninguna eliminación y simplemente enumera todas las ISA para cada seguimiento.

name
Requerido
<xref:Optional>[str]

Un nombre opcional para la estimación. Si se indica, se agregará como primera columna a la tabla de resultados para todas las entradas.

Parámetros de palabra clave únicamente

Nombre Description
max_error
Valor predeterminado: 1.0
post_process
Valor predeterminado: False
use_graph
Valor predeterminado: True
name
Valor predeterminado: None

Devoluciones

Tipo Description

Tabla que contiene los resultados de estimación óptimos.

generic_function

generic_function(func)

Parámetros

Nombre Description
func
Requerido

instruction_name

instruction_name(id)

Parámetros

Nombre Description
id
Requerido

linear_function

linear_function(slope)

Parámetros

Nombre Description
slope
Requerido

plot_estimates

Trazado de los resultados de la estimación que muestran cúbits frente al tiempo de ejecución.

Crea un gráfico de dispersión del registro en el que el eje X muestra el tiempo de ejecución total y el eje Y muestra el número total de cúbits físicos.

los datos pueden ser únicos EstimationTable o iterables de tablas. Cuando se proporcionan varias tablas, cada una se traza como una serie independiente. Si una tabla tiene un EstimationTable.name objeto (establecido a través del parámetro name de estimate), se usa como etiqueta de leyenda para esa serie.

Cuando runtime_unit es None (el valor predeterminado), el eje X usa etiquetas de tic de unidad de tiempo legibles que abarcan nanosegundos a siglos. Cuando se da una cadena de unidad (por ejemplo "hours", ), todos los entornos de ejecución se escalan a esa unidad y la etiqueta del eje X incluye la unidad mientras que los tics son números sin formato.

Valores admitidos 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'})

Parámetros

Nombre Description
data
Requerido

Objeto EstimationTable único o iterable de objetos EstimationTable que se van a trazar.

runtime_unit
Requerido

Unidad de tiempo opcional a la que se va a escalar el eje X.

figsize
Requerido

Ilustración de dimensiones en pulgadas como (width, height).

scatter_args
Requerido

Argumentos de palabra clave adicionales a matplotlib.axes.Axes.scatter los que se pasará al trazar los puntos.

Parámetros de palabra clave únicamente

Nombre Description
runtime_unit
Valor predeterminado: None
figsize
Valor predeterminado: (15, 8)
scatter_args
Valor predeterminado: {'marker': 'x'}

Devoluciones

Tipo Description
<xref:matplotlib.figure.Figure>

Ilustración que contiene el trazado.

Excepciones

Tipo Description

Si matplotlib no está instalado.

Si todas las tablas están vacías o runtime_unit no se reconocen.

property_name

property_name(id)

Parámetros

Nombre Description
id
Requerido

property_name_to_key

property_name_to_key(name)

Parámetros

Nombre Description
name
Requerido