qre Paquet

Classes

Application

Une application définit une classe de problèmes de calcul quantique, ainsi qu’une méthode pour générer des traces pour des instances de problèmes spécifiques.

Nous faisons la distinction entre les paramètres d’application et de trace. Les paramètres d’application définissent l’instance particulière de l’application à prendre en compte. Les paramètres de trace définissent comment générer une trace. Ils changent la façon spécifique dans laquelle nous résolvons le problème, mais pas le problème lui-même.

Par exemple, dans l’cryptanalysis quantique, les paramètres d’application peuvent définir la taille de clé d’un produit RSA prime, tandis que les paramètres de trace définissent l’algorithme à utiliser pour rompre le chiffrement, ainsi que les paramètres qui y figurent.

Architecture

Classe de base abstraite pour les architectures matérielles quantiques.

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

Table des résultats d’estimation des ressources quantiques.

Étend et fournit des colonnes configurables list[EstimationTableEntry] pour afficher les données d’estimation. Par défaut, la table inclut des qubits, un runtime (affiché sous la forme d’un pandas.Timedelta) et des colonnes d’erreur . Des colonnes supplémentaires peuvent être ajoutées ou insérées avec add_column et insert_column.

Initialisez une table d’estimation vide avec des colonnes par défaut.

EstimationTableColumn

Définition d’une seule colonne dans un EstimationTable.

EstimationTableEntry

Une seule ligne dans un EstimationTable.

Chaque entrée représente un résultat d’estimation pareto optimal pour une combinaison particulière de trace d’application et d’architecture ISA.

FactoryResult
ISA
ISAContext

Contexte passé par énumération, contenant l’état partagé.

Initialisez le contexte ISA pour l’architecture donnée.

ISAQuery

Classe de base abstraite pour tous les nœuds de l’arborescence d’énumération ISA.

Les nœuds d’énumération définissent la structure de l’espace de recherche pour les isas à partir d’architectures et modifiées par des transformations ISA telles que des schémas de correction d’erreurs. Ils peuvent être composés à l’aide d’opérateurs tels que + (somme) et * (produit) pour créer des stratégies d’énumération complexes.

ISARefNode

Référence à un ISA lié dans le contexte d’énumération.

Ce nœud recherche la liaison à partir du contexte et génère l’ISA lié.

ISARequirements
ISATransform

Classe de base abstraite pour les transformations entre isas (par exemple, schémas QEC).

Une transformation ISA définit un mappage à partir d’un ISA d’entrée obligatoire (par exemple, contraintes d’architecture) à un ISA de sortie fourni (instructions logiques). Il prend en charge l’énumération des paramètres de configuration.

InstructionFrontier
InstructionSource
LatticeSurgery

Lattice chirurgie transformation de trace.

Convertit une trace en forme adaptée à l’estimation des ressources basées sur lattice-chirurgie.

PSSPC

Transformation de trace de calcul basée sur Pauli (PSSPC).

Convertit les portes de rotation et éventuellement les portes CCX en opérations basées sur L’état T adaptées à l’estimation des ressources de chirurgie de treillis.

Trace
TraceQuery

Requête qui énumère les traces transformées d’une application.

Une requête de trace chaîne une séquence de transformations de trace, chacune avec des arguments de mot clé facultatifs pour remplacer leurs domaines de paramètres par défaut.

TraceTransform

Classe de base abstraite pour les transformations de trace.

Functions

block_linear_function

block_linear_function(block_size, slope, offset=None)

Paramètres

Nom Description
block_size
Obligatoire
slope
Obligatoire
offset
Valeur par défaut: None

constant_function

constant_function(value)

Paramètres

Nom Description
value
Obligatoire

constraint

Créez une contrainte d’instruction.

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

Paramètres

Nom Description
id
Obligatoire
int

ID d’instruction.

encoding

Encodage des instructions. PHYSIQUE (0) ou LOGIQUE (1).

Valeur par défaut: 0
arity
Obligatoire
<xref:Optional>[int]

L’arité de l’instruction. Si aucune, l’instruction est supposée avoir une arité variable. La valeur par défaut est 1.

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

Contrainte sur le taux d’erreur.

**kwargs
Obligatoire

Propriétés requises dont les instructions correspondantes doivent avoir. Noms de propriétés valides : distance. Affectez la valeur True pour exiger la propriété.

Paramètres de mot clé uniquement

Nom Description
arity
Valeur par défaut: 1
error_rate
Valeur par défaut: None

Retours

Type Description

Contrainte d’instruction.

Exceptions

Type Description

Si un nom de propriété inconnu est fourni dans kwargs.

estimate

Estimer les besoins en ressources d’une instance et d’une architecture d’application donnés.

L’instance de l’application peut retourner plusieurs traces. Chacune des traces est transformée par la requête de trace, qui applique plusieurs transformations de trace en séquence. Chaque transformation peut retourner plusieurs traces. De même, l’ISA de l’architecture est transformée par la requête ISA, qui applique plusieurs transformations ISA en séquence, chacune pouvant retourner plusieurs ISA. L’estimation est effectuée pour chaque combinaison de trace transformée et d’ISA. Les résultats sont collectés dans un EstimationTable et retournés.

La collection contient uniquement les résultats optimaux par rapport au nombre total de qubits et au runtime total.

Note

Stratégie d’élagage utilisée lorsque use_graph a la valeur True (valeur par défaut)

filtre les instructions ISA en comparant leur espace d’instruction, leur temps,

et d’erreur indépendamment. Toutefois, le nombre total de qubits d’un résultat

dépend de l’interaction entre l’espace de fabrique et le runtime :

factory_qubits = copies × factory_space où les copies sont déterminées

par count.div_ceil(runtime / factory_time). En raison de cela, un ISA

les instructions dominées par les métriques par instruction peuvent toujours

contribuer à un résultat global pareto-optimal (par exemple, une usine avec

une durée plus élevée peut nécessiter moins de copies, ce qui entraîne moins de qubits totaux. En tant que

conséquence, use_graph=True peut manquer certains résultats qui

use_graph=False est trouvé. Utiliser use_graph=False lors de l’exécution de

la frontière pareto est requise.

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

Paramètres

Nom Description
application
Obligatoire

Application quantique à estimer.

architecture
Obligatoire

Architecture quantique cible.

isa_query
Obligatoire

Requête ISA pour énumérer les isas de l’architecture.

trace_query

Requête de trace pour énumérer les traces de l’application.

Valeur par défaut: None
max_error
Obligatoire

Erreur maximale autorisée pour les résultats d’estimation.

post_process
Obligatoire

Si la valeur est True, utilisez le chemin d’estimation Python threads (destiné à une logique de post-traitement ultérieure). Si la valeur est False (valeur par défaut), utilisez le chemin d’estimation parallèle Rust.

use_graph
Obligatoire

Si la valeur est True (valeur par défaut), utilisez le chemin d’estimation Rust qui génère un graphique d’isas et supprime les isas non optimaux pendant l’estimation. Si la valeur est False, utilisez le chemin d’estimation Rust qui n’effectue aucune taille et énumère simplement tous les isas pour chaque trace.

name
Obligatoire
<xref:Optional>[str]

Nom facultatif de l’estimation. Si elle est donnée, elle est ajoutée en tant que première colonne à la table de résultats pour toutes les entrées.

Paramètres de mot clé uniquement

Nom Description
max_error
Valeur par défaut: 1.0
post_process
Valeur par défaut: False
use_graph
Valeur par défaut: True
name
Valeur par défaut: None

Retours

Type Description

Table contenant les résultats d’estimation optimaux.

generic_function

generic_function(func)

Paramètres

Nom Description
func
Obligatoire

instruction_name

instruction_name(id)

Paramètres

Nom Description
id
Obligatoire

linear_function

linear_function(slope)

Paramètres

Nom Description
slope
Obligatoire

plot_estimates

Tracer les résultats d’estimation affichant des qubits et du runtime.

Crée un nuage de points de journal dans lequel l’axe x affiche le runtime total et l’axe y affiche le nombre total de qubits physiques.

les données peuvent être une seule EstimationTable ou une itérable de tables. Lorsque plusieurs tables sont fournies, chacune est tracée en tant que série distincte. Si une table a un EstimationTable.name (défini via le paramètre de nom de ), il est utilisé comme étiquette de estimatelégende pour cette série.

Lorsque runtime_unit est None (valeur par défaut), l’axe x utilise des étiquettes de graduations d’unité de temps lisibles par l’homme couvrant des nanosecondes à des siècles. Lorsqu’une chaîne d’unité est donnée (par exemple "hours"), tous les runtimes sont mis à l’échelle vers cette unité et l’étiquette de l’axe x inclut l’unité tandis que les graduations sont des nombres simples.

Valeurs runtime_unit prises en charge : "ns", "µs" (ou "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'})

Paramètres

Nom Description
data
Obligatoire

EstimationTable unique ou itérable d’objets EstimationTable à tracer.

runtime_unit
Obligatoire

Unité de temps facultative pour mettre à l’échelle l’axe x.

figsize
Obligatoire

Dimensions de la figure en pouces sous forme (width, height)de .

scatter_args
Obligatoire

Arguments de mot clé supplémentaires à matplotlib.axes.Axes.scatter passer lors du traçage des points.

Paramètres de mot clé uniquement

Nom Description
runtime_unit
Valeur par défaut: None
figsize
Valeur par défaut: (15, 8)
scatter_args
Valeur par défaut: {'marker': 'x'}

Retours

Type Description
<xref:matplotlib.figure.Figure>

Figure contenant le tracé.

Exceptions

Type Description

Si matplotlib n’est pas installé.

Si toutes les tables sont vides ou runtime_unit n’est pas reconnue.

property_name

property_name(id)

Paramètres

Nom Description
id
Obligatoire

property_name_to_key

property_name_to_key(name)

Paramètres

Nom Description
name
Obligatoire