interop 套件
類別
| PeakUsageGreedyQubitManager |
一個量子位元管理器,分別追蹤計算量子位元與記憶體量子位元。 它由兩個獨立的量子位元管理器組成,對應每種量子位元類型。 每位管理者都使用來自 一種類型的量子位元在被釋放後,無法再作為不同類型的量子位元重複使用。 因此,峰值量子位元數等於每種類型峰值量子位數的總和。 初始化 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
必要
|
|