qre Paket

Klassen

Application

Eine Anwendung definiert eine Klasse von Quantenberechnungsproblemen zusammen mit einer Methode, um Ablaufverfolgungen für bestimmte Probleminstanzen zu generieren.

Wir unterscheiden zwischen Anwendungs- und Ablaufverfolgungsparametern. Die Anwendungsparameter definieren, welche bestimmte Instanz der Anwendung berücksichtigt werden soll. Die Ablaufverfolgungsparameter definieren, wie eine Ablaufverfolgung generiert wird. Sie ändern die spezifische Art und Weise, in der wir das Problem lösen, aber nicht das Problem selbst.

In der Quantenkryptalyse könnten die Anwendungsparameter beispielsweise die Schlüsselgröße für ein RSA Prime-Produkt definieren, während die Ablaufverfolgungsparameter definieren, welcher Algorithmus verwendet werden soll, um die Kryptografie zu unterbrechen, sowie Parameter darin.

Architecture

Abstrakte Basisklasse für Quantenhardwarearchitekturen.

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

Eine Tabelle mit Quantenressourcenschätzungsergebnissen.

Erweitert list[EstimationTableEntry] und stellt konfigurierbare Spalten zum Anzeigen von Schätzungsdaten bereit. Standardmäßig enthält die Tabelle Qubits, Laufzeit (als A pandas.Timedeltaangezeigt) und Fehlerspalten . Zusätzliche Spalten können hinzugefügt oder eingefügt werden mit add_column und insert_column.

Initialisieren Sie eine leere Schätzungstabelle mit Standardspalten.

EstimationTableColumn

Definition einer einzelnen Spalte in einer EstimationTable.

EstimationTableEntry

Eine einzelne Zeile in einer EstimationTable.

Jeder Eintrag stellt ein Pareto-optimales Schätzungsergebnis für eine bestimmte Kombination aus Anwendungsablaufverfolgung und Architektur ISA dar.

FactoryResult
ISA
ISAContext

Kontext, der über enumeration übergeben wurde und den freigegebenen Zustand enthält.

Initialisieren Sie den ISA-Kontext für die angegebene Architektur.

ISAQuery

Abstrakte Basisklasse für alle Knoten in der ISA-Enumerationsstruktur.

Enumerationsknoten definieren die Struktur des Suchbereichs für ISAs beginnend mit Architekturen und geändert von ISA-Transformationen, z. B. Fehlerkorrekturschemas. Sie können mithilfe von Operatoren wie + (Summe) und * (Produkt) zusammengesetzt werden, um komplexe Enumerationsstrategien zu erstellen.

ISARefNode

Ein Verweis auf eine gebundene ISA im Enumerationskontext.

Dieser Knoten sucht die Bindung aus dem Kontext und liefert die gebundene ISA.

ISARequirements
ISATransform

Abstrakte Basisklasse für Transformationen zwischen ISAs (z. B. QEC-Schemas).

Eine ISA-Transformation definiert eine Zuordnung von einer erforderlichen Eingabe-ISA (z. B. Architektureinschränkungen) zu einer bereitgestellten Ausgabe-ISA (logische Anweisungen). Es unterstützt die Enumeration von Konfigurationsparametern.

InstructionFrontier
InstructionSource
LatticeSurgery

Gitterchirurgie Spurentransformation.

Wandelt eine Spur in ein Formular um, das für die Gitterchirurgie-basierte Ressourcenschätzung geeignet ist.

PSSPC

Pauli-basierte Berechnungsablaufverfolgungstransformation (PSSPC).

Wandelt Drehtore und optional CCX-Tore in T-zustandsbasierte Operationen um, die für die Gitterchirurgie-Ressourcenschätzung geeignet sind.

Trace
TraceQuery

Eine Abfrage, die transformierte Ablaufverfolgungen aus einer Anwendung aufzählt.

Eine Ablaufverfolgungsabfrage verkettet eine Sequenz von Ablaufverfolgungstransformationen mit optionalen Schlüsselwortargumenten, um ihre Standardparameterdomänen außer Kraft zu setzen.

TraceTransform

Abstrakte Basisklasse für Ablaufverfolgungstransformationen.

Functions

block_linear_function

block_linear_function(block_size, slope, offset=None)

Parameter

Name Beschreibung
block_size
Erforderlich
slope
Erforderlich
offset
Standardwert: None

constant_function

constant_function(value)

Parameter

Name Beschreibung
value
Erforderlich

constraint

Erstellen Sie eine Anweisungseinschränkung.

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

Parameter

Name Beschreibung
id
Erforderlich
int

Die Anweisungs-ID.

encoding

Die Anweisungscodierung. PHYSISCH (0) oder LOGISCH (1).

Standardwert: 0
arity
Erforderlich
<xref:Optional>[int]

Die Anweisungsarität. If None, instruction is assumed to have variable arity. Der Standardwert ist 1.

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

Die Einschränkung der Fehlerrate.

**kwargs
Erforderlich

Erforderliche Eigenschaften, die übereinstimmende Anweisungen enthalten müssen. Gültige Eigenschaftsnamen: Abstand. Legen Sie den Wert auf "True" fest, um die Eigenschaft zu erfordern.

Nur Schlüsselwortparameter

Name Beschreibung
arity
Standardwert: 1
error_rate
Standardwert: None

Gibt zurück

Typ Beschreibung

Die Anweisungseinschränkung.

Ausnahmen

Typ Beschreibung

Wenn in Kwargs ein unbekannter Eigenschaftsname angegeben wird.

estimate

Schätzen Sie die Ressourcenanforderungen für eine bestimmte Anwendungsinstanz und -architektur.

Die Anwendungsinstanz gibt möglicherweise mehrere Ablaufverfolgungen zurück. Jede Der Ablaufverfolgungen wird von der Ablaufverfolgungsabfrage transformiert, wodurch mehrere Ablaufverfolgungstransformationen in Sequenz angewendet werden. Jede Transformation kann mehrere Ablaufverfolgungen zurückgeben. Ebenso wird die ISA der Architektur von der ISA-Abfrage transformiert, die mehrere ISA-Transformationen in Sequenz anwendet, von denen jede mehrere ISAs zurückgeben kann. Die Schätzung wird für jede Kombination von transformierten Ablaufverfolgungen und ISA durchgeführt. Die Ergebnisse werden in einer Schätzungstabelle gesammelt und zurückgegeben.

Die Auflistung enthält nur die Ergebnisse, die im Hinblick auf die Gesamtanzahl der Qubits und der Gesamtlaufzeit optimal sind.

Note

Die Zuschneidestrategie, die verwendet wird, wenn use_graph auf "True" festgelegt ist (Standardeinstellung)

filtert ISA-Anweisungen, indem sie ihren Abstand pro Anweisung, Zeit,

und fehler unabhängig. Die Gesamtzahl der Qubits eines Ergebnisses

hängt von der Interaktion zwischen Werksraum und Laufzeit ab:

factory_qubits = Kopien × factory_space, bei denen Kopien bestimmt werden

by count.div_ceil(runtime /factory_time). Aus diesem Grund ist eine ISA

Anweisung, die auf Metriken pro Anweisung dominiert wird, können weiterhin

tragen zu einem globalen Pareto-optimalen Ergebnis bei (z.B. eine Fabrik mit

höhere Zeit benötigt möglicherweise weniger Kopien, was zu weniger Gesamtqubits führt). Als

folge, use_graph=True kann einige Ergebnisse verpassen, die

use_graph=False würde gefunden. Verwenden von "use_graph=False" bei Vollständigkeit

Die Pareto-Grenze ist erforderlich.

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

Parameter

Name Beschreibung
application
Erforderlich

Die Quantenanwendung, die geschätzt werden soll.

architecture
Erforderlich

Die Ziel-Quantenarchitektur.

isa_query
Erforderlich

Die ISA-Abfrage zum Aufzählen von ISAs aus der Architektur.

trace_query

Die Ablaufverfolgungsabfrage zum Aufzählen von Ablaufverfolgungen aus der Anwendung.

Standardwert: None
max_error
Erforderlich

Der maximal zulässige Fehler für die Schätzergebnisse.

post_process
Erforderlich

Wenn True, verwenden Sie den Python-Thread-Schätzungspfad (vorgesehen für zukünftige Nachbearbeitungslogik). Wenn "False" (Standardeinstellung) verwendet wird, verwenden Sie den Parallelschätzungspfad von Rust.

use_graph
Erforderlich

Wenn "True" (Standard), verwenden Sie den Rust-Schätzungspfad, der während der Schätzung ein Diagramm von ISAs erstellt und suboptimale ISAs schneidet. Wenn False, verwenden Sie den Rost-Schätzungspfad, der keine Beschneidung durchführt, und zählt einfach alle ISAs für jede Spur auf.

name
Erforderlich
<xref:Optional>[str]

Optionaler Name für die Schätzung. Wenn angegeben, wird dies als erste Spalte der Ergebnistabelle für alle Einträge hinzugefügt.

Nur Schlüsselwortparameter

Name Beschreibung
max_error
Standardwert: 1.0
post_process
Standardwert: False
use_graph
Standardwert: True
name
Standardwert: None

Gibt zurück

Typ Beschreibung

Eine Tabelle mit den optimalen Schätzungsergebnissen.

generic_function

generic_function(func)

Parameter

Name Beschreibung
func
Erforderlich

instruction_name

instruction_name(id)

Parameter

Name Beschreibung
id
Erforderlich

linear_function

linear_function(slope)

Parameter

Name Beschreibung
slope
Erforderlich

plot_estimates

Zeichnen Sie schätzungsergebnisse, die Qubits im Vergleich zur Laufzeit anzeigen.

Erstellt ein Punktdiagramm mit Protokollprotokollen, bei dem die X-Achse die Gesamtlaufzeit und die y-Achse die Gesamtanzahl der physischen Qubits anzeigt.

Daten können eine einzelne EstimationTable oder eine iterierbare Tabelle sein. Wenn mehrere Tabellen bereitgestellt werden, wird jede als separate Datenreihe gezeichnet. Wenn eine Tabelle über einen EstimationTable.name (über den Namensparameter festgelegt estimate) verfügt, wird sie als Legendenbezeichnung für diese Datenreihe verwendet.

Wenn runtime_unit ist None (standard), verwendet die X-Achse lesbare Zeiteinheitsteilteilbeschriftungen, die Nanosekunden bis Jahrhunderte umfassen. Wenn eine Einheitenzeichenfolge angegeben wird (z. B. "hours"), werden alle Laufzeiten auf diese Einheit skaliert, und die Beschriftung der x-Achse enthält die Einheit, während die Teilstriche einfache Zahlen sind.

Unterstützte runtime_unit Werte: "ns", ( "µs" oder "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'})

Parameter

Name Beschreibung
data
Erforderlich

Eine einzelne Schätztabelle oder eine Iterable von Schätztabellenobjekten, die dargestellt werden sollen.

runtime_unit
Erforderlich

Optionale Zeiteinheit zum Skalieren der X-Achse auf.

figsize
Erforderlich

Abbildungsabmessungen in Zoll als (width, height).

scatter_args
Erforderlich

Zusätzliche Schlüsselwortargumente, die matplotlib.axes.Axes.scatter beim Zeichnen der Punkte übergeben werden sollen.

Nur Schlüsselwortparameter

Name Beschreibung
runtime_unit
Standardwert: None
figsize
Standardwert: (15, 8)
scatter_args
Standardwert: {'marker': 'x'}

Gibt zurück

Typ Beschreibung
<xref:matplotlib.figure.Figure>

Die Abbildung, die die Zeichnung enthält.

Ausnahmen

Typ Beschreibung

Wenn matplotlib nicht installiert ist.

Wenn alle Tabellen leer sind oder runtime_unit nicht erkannt werden.

property_name

property_name(id)

Parameter

Name Beschreibung
id
Erforderlich

property_name_to_key

property_name_to_key(name)

Parameter

Name Beschreibung
name
Erforderlich