interop Paket

Klassen

PeakUsageGreedyQubitManager

Ein Qubit-Manager, der Compute- und Speicher-Qubits separat nachverfolgt.

Es besteht aus zwei unabhängigen Qubit-Managern für jeden Qubit-Typ. Jeder Manager verwendet eine gierige Zuordnungsstrategie von cirq.GreedyQubitManager.

Qubits eines Typs können nach dem Freigeben nicht als Qubits unterschiedlicher Art wiederverwendet werden. Daher ist die Spitzen-Qubitanzahl gleich der Summe der Spitzen-Qubit-Anzahl für jeden Typ.

Initialisieren Sie den PeakUsageGreedyQubitManager.

PopBlock

Signalisiert das Ende des aktuellen wiederholten Blocks in der Ablaufverfolgung.

PushBlock

Signalisiert den Beginn eines wiederholten Blocks in der Ablaufverfolgung.

ReadFromMemoryGate

Verschiebt qubit-Zustände aus dem MEMORY-Register in das COMPUTE-Register.

Geht davon aus, dass COMPUTE-Qubits im Zustand 0 vorbereitet sind. Lässt MEMORY-Qubits im Zustand "0" zurück.

Initialisiert ReadFromMemoryGate.

TypedQubit

Qubit mit Typ.

Initialisiert typisiert qubit.

WriteToMemoryGate

Verschiebt qubit-Zustände aus dem COMPUTE-Register in das MEMORY-Register.

Geht davon aus, dass MEMORY-Qubits im Zustand 0 vorbereitet sind. Verlässt COMPUTE-Qubits im Zustand 0.

Initialisiert WriteToMemoryGate.

Enumerationen

QubitType

Qubit-Typ.

Jeder logische Qubit kann entweder ein Compute- oder Speicher-Qubit sein. Compute qubits können normal verwendet werden.

Speicher qubits haben eine Einschränkung, die Tore nicht auf sie angewendet werden können. Die einzigen zulässigen Vorgänge für Speicher-Qubits sind Lese-/Schreibvorgänge, bei denen der Zustand vom Speicher zum Computegate oder vom Compute-to-Memory-Gate verschoben wird.

Wir gehen davon aus, dass beim Anwenden der Fehlerkorrektur Speicher-Qubits mit einem effizienteren Fehlerkorrekturschema codiert werden, das weniger Ressourcen erfordert, aber keine Gate-Anwendung zulässt (z. B. Yoked-Oberflächencodes, https://arxiv.org/abs/2312.04522).

Functions

assert_qubits_type

Bestätigt, dass Qubits den angegebenen Typ haben, aber nur, wenn sie TypedQubits sind.

assert_qubits_type(qs: Sequence[Qid], qubit_type: QubitType) -> None

Parameter

Name Beschreibung
qs
Erforderlich
qubit_type
Erforderlich

read_from_memory

Vorgang zum Lesen von Qubits aus dem Speicher.

read_from_memory(memory_qubits: Sequence[Qid], compute_qubits: Sequence[Qid]) -> Operation

Parameter

Name Beschreibung
memory_qubits
Erforderlich
compute_qubits
Erforderlich

trace_from_cirq

Wandeln Sie einen Zirq-Schaltkreis in eine Ressourcenschätzungsablaufverfolgung um.

Durchlaufen Sie alle Momente und Vorgänge im Schaltkreis, und wandeln Sie jedes Gate in Ablaufverfolgungsvorgänge um. Gates mit einer _to_trace Methode werden direkt konvertiert; andere werden rekursiv über Cirqs _decompose_with_context_ oder _decompose_ Protokolle dekompiliert.

trace_from_cirq(circuit: cirq.CIRCUIT_LIKE, *, classical_control_probability: float = 0.5, rotation_threshold: float = 1e-06, track_memory_qubits: bool = True) -> Trace

Parameter

Name Beschreibung
circuit
Erforderlich

Der zu konvertierende Zirq-Schaltkreis.

classical_control_probability
Erforderlich

Wahrscheinlichkeit, dass eine klassisch kontrollierte Operation in die Ablaufverfolgung einbezogen wird. Der Standardwert ist 0,5.

rotation_threshold
Erforderlich

Drehungs-Exponenten mit absolutem Wert unterhalb dieses Schwellenwerts werden als Identität behandelt und aus der Ablaufverfolgung weggelassen. Dies gilt sowohl für Einzel-Qubit-Drehungen (RX, RY, RZ) als auch für die Drehungskomponenten kontrollierter Z-Zersetzungen. Der Standardwert ist 1e-6.

track_memory_qubits
Erforderlich

Bei "True" werden Speicher-Qubits separat von Compute-Qubits nachverfolgt. Bei "False" werden alle Qubits als Compute-Qubits behandelt. Wenn "True", "Read-from-memory" und "Write-to-Memory"-Anweisungen in der Ablaufverfolgung beibehalten werden, werden sie andernfalls in SWAP- und RESET-Anweisungen dekompiliert. Standardwert ist "True".

Nur Schlüsselwortparameter

Name Beschreibung
classical_control_probability
Standardwert: 0.5
rotation_threshold
Standardwert: 1e-06
track_memory_qubits
Standardwert: True

Gibt zurück

Typ Beschreibung

Eine Ablaufverfolgung, die ein Ausführungsprofil des Schaltkreises darstellt.

trace_from_entry_expr

Wandeln Sie einen Q#-Eintragsausdruck in eine Ressourcenschätzungsablaufverfolgung um.

Wertet den Eintragsausdruck aus, um logische Zählungen zu erhalten, und erstellt dann eine Ablaufverfolgung, die die entsprechenden Quantenvorgänge enthält.

trace_from_entry_expr(entry_expr: str | Callable | LogicalCounts, *args) -> Trace

Parameter

Name Beschreibung
entry_expr
Erforderlich
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Eine Q#-Eintragsausdruckszeichenfolge, eine aufrufbare oder vorab berechnete logische Anzahl.

*args
Erforderlich

Die Argumente, die an die aufrufbare Übergeben werden sollen, wenn eines angegeben wird.

Gibt zurück

Typ Beschreibung

Eine Ablaufverfolgung, die das Ressourcenprofil des Programms darstellt.

trace_from_entry_expr_cached

Konvertieren Sie einen Q#-Eintragsausdruck in eine Ablaufverfolgung mit optionaler Zwischenspeicherung.

Wenn cache_path bereitgestellt und vorhanden ist, wird die Ablaufverfolgung vom Datenträger geladen. Andernfalls wird die Ablaufverfolgung über trace_from_entry_exprcache_path berechnet und optional geschrieben.

trace_from_entry_expr_cached(entry_expr: str | Callable | LogicalCounts, cache_path: Path | None, *args) -> Trace

Parameter

Name Beschreibung
entry_expr
Erforderlich
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Eine Q#-Eintragsausdruckszeichenfolge, eine aufrufbare oder vorab berechnete logische Anzahl.

cache_path
Erforderlich
<xref:Optional>[<xref:Path>]

Pfad zum Lesen/Schreiben der zwischengespeicherten Ablaufverfolgung. Wenn keines vorhanden ist, ist die Zwischenspeicherung deaktiviert.

Gibt zurück

Typ Beschreibung

Eine Ablaufverfolgung, die das Ressourcenprofil des Programms darstellt.

trace_from_qir

Konvertieren Sie ein QIR-Programm in eine Ressourcenschätzungsablaufverfolgung.

Analysiert das QIR-Modul, extrahiert Quantentore und erstellt eine Spur, die zur Ressourcenschätzung verwendet werden kann. Bedingte Verzweigungen werden durch immer nach dem falschen Pfad aufgelöst (vorausgesetzt, die Messergebnisse sind Null).

trace_from_qir(input: str | bytes) -> Trace

Parameter

Name Beschreibung
input
Erforderlich

QIR-Eingabe als LLVM IR-Text (str) oder Bitcode (Bytes).

Gibt zurück

Typ Beschreibung

Eine Spur, die die Quantenoperationen aus dem QIR-Programm enthält.

write_to_memory

Vorgang zum Schreiben von Qubits in den Arbeitsspeicher.

write_to_memory(memory_qubits: Sequence[Qid], compute_qubits: Sequence[Qid]) -> Operation

Parameter

Name Beschreibung
memory_qubits
Erforderlich
compute_qubits
Erforderlich