interop 套件

類別

PeakUsageGreedyQubitManager

一個量子位元管理器,分別追蹤計算量子位元與記憶體量子位元。

它由兩個獨立的量子位元管理器組成,對應每種量子位元類型。 每位管理者都使用來自 cirq.GreedyQubitManager的貪婪配置策略。

一種類型的量子位元在被釋放後,無法再作為不同類型的量子位元重複使用。 因此,峰值量子位元數等於每種類型峰值量子位數的總和。

初始化 PeakUsageGreedyQubit Manager。

PopBlock

表示該追蹤中當前重複區塊結束。

PushBlock

表示追蹤中重複區塊的開始。

ReadFromMemoryGate

將量子位元狀態從 MEMORY 暫存器移至 COMPUTE 暫存器。

假設 COMPUTE 量子位元是在 0 狀態下準備的。 讓 MEMORY 量子位元保持 0 狀態。

初始化 ReadFromMemoryGate。

TypedQubit

帶有型別的量子位元。

初始化已輸入的量子位元。

WriteToMemoryGate

將量子位元狀態從 COMPUTE 暫存器移至 MEMORY 暫存器。

假設記憶體量子位元是在 0 狀態下準備的。 會讓 COMPUTE 量子位元保持 0 狀態。

初始化 WriteToMemoryGate。

列舉

QubitType

量子位元類型。

每個邏輯量子位元可以是計算量子位元或記憶體量子位元。 計算量子位元可以正常使用。

記憶體量子位元有限制,不能對其施加閘。 記憶體量子位元唯一允許的操作是讀寫,即狀態從記憶體移動到計算閘,或從計算閘轉移到記憶體閘。

我們假設在應用錯誤更正時,記憶體量子位元會以更有效率的錯誤更正方案編碼,所需資源較少,但不允許閘(例如帶軌表面碼)。 https://arxiv.org/abs/2312.04522

函式

assert_qubits_type

斷言量子位元有指定型別,但前提是它們是型別量子位元。

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

參數

名稱 Description
qs
必要
qubit_type
必要

read_from_memory

從記憶體讀取量子位元的操作。

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

參數

名稱 Description
memory_qubits
必要
compute_qubits
必要

trace_from_cirq

將 Cirq 電路轉換成資源估計追蹤。

會遍歷電路中的所有矩矩與操作,將每個閘極轉換為軌跡操作。 帶有 _to_trace 方法的閘門會直接轉換;其他則透過 Cirq _decompose_with_context_ 或 _decompose_ 協定遞迴分解。

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

參數

名稱 Description
circuit
必要

Cirq 電路要轉換。

classical_control_probability
必要

軌跡中包含經典控制操作的機率。 預設為 0.5。

rotation_threshold
必要

絕對值低於此閾值的旋轉指數視為單位元,並從軌跡中省略。 這適用於單量子位旋轉(RX、RY、RZ)以及受控Z分解中的旋轉分量。 預設為1e-6。

track_memory_qubits
必要

當為真時,記憶體量子位元會與計算量子位元分開追蹤。 當 False 時,所有量子位元都被視為計算量子位元。 此外,若為 True,記憶體讀取與寫入記憶體指令會保留在追蹤中,否則會分解為 SWAP 和 RESET 指令。 預設為真。

僅限關鍵字的參數

名稱 Description
classical_control_probability
預設值: 0.5
rotation_threshold
預設值: 1e-06
track_memory_qubits
預設值: True

傳回

類型 Description

一個代表電路執行剖面的追蹤。

trace_from_entry_expr

將 Q# 的輸入表達式轉換成資源估計的追蹤。

評估入口表達式以獲得邏輯計數,然後建立包含相應量子運算的軌跡。

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

參數

名稱 Description
entry_expr
必要
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Q# 條目表達字串、可呼叫的,或預先計算好的邏輯計數。

*args
必要

若有可調用者,則可傳遞參數。

傳回

類型 Description

一個代表程式資源輪廓的追蹤。

trace_from_entry_expr_cached

將 Q# 的入口表達式轉換成 Trace,並可選快取。

如果 cache_path 提供且存在,則會從磁碟載入追蹤。 否則,軌跡由 計算 trace_from_entry_expr ,並可選擇寫入 cache_path。

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

參數

名稱 Description
entry_expr
必要
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Q# 條目表達字串、可呼叫的,或預先計算好的邏輯計數。

cache_path
必要
<xref:Optional>[<xref:Path>]

快取追蹤的讀寫路徑。 若無,則快取被禁用。

傳回

類型 Description

一個代表程式資源輪廓的追蹤。

trace_from_qir

將 QIR 程式轉換為資源估計追蹤。

解析 QIR 模組,提取量子閘,並建立可用於資源估計的追蹤。 條件分支的解析方式是始終沿著錯誤路徑(假設測量結果為零)。

trace_from_qir(input: str | bytes) -> Trace

參數

名稱 Description
input
必要

QIR 輸入為 LLVM 紅外線文字(str)或位元碼(位元組)。

傳回

類型 Description

一個包含QIR程式量子運算的痕跡。

write_to_memory

將量子位元寫入記憶體的操作。

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

參數

名稱 Description
memory_qubits
必要
compute_qubits
必要