RoundBasedFactory 類別

一個神奇的狀態工廠,利用基於圓的蒸餾管線產生 T 閘指令。

該工廠探索蒸餾單元的組合(如「15比1 RM 製備」與「15 比 1 空間效率」),以尋找最佳配置,以縮短時間與空間,同時達成目標誤差率。 它支援物理層級蒸餾(當輸入 T 閘被物理編碼)與邏輯層級蒸餾(透過表面編碼進行晶格手術)。

為了考量蒸餾輪次的成功機率,工廠以每輪必須滿足的失敗機率要求(預設為1%)來建模管線。 每輪蒸餾單位數量會調整以符合此需求,進而影響整體空間需求。

空間需求是透過使用者提供的函數計算,該函數彙總每回合的空間(例如總和或最大值)。 函數 sum 模擬量子位元不會在多輪重複使用的情況,而函數則 max 模擬量子位元在多輪重複使用的情況。

對於邏輯層蒸餾單元的列舉,工廠依賴使用者提供的 ISAQuery (預設為 SurfaceCode.q())來探索不同的表面程式碼配置及其對應的晶格手術指令。 這些指令必須由使用者自行提供,且無法自動從所提供的實作指令集中推導,因為它們只能包含部分所需指令。 使用者需確保所提供的查詢與該工廠所使用的架構相符。

結果會被快取到磁碟以提升效率。

參考:

  • Sergei Bravyi、Alexei Kitaev:具備理想 Clifford 閘與噪聲輔助的普遍量子計算, arXiv:quant-ph/0403025

  • Michael E. Beverland、Prakash Murali、Matthias Troyer、Krysta M. Svore、Torsten Hoefler、Vadym Kliuchnikov、Guang Hao Low、Mathias Soeken、Aarthi Sundaram、Alexander Vaschillo:評估以實現實際量子優勢的需求, arXiv:2211.07629

建構函式

RoundBasedFactory(code_query: ~qdk.qre._isa_enumeration.ISAQuery = <factory>, physical_qubit_calculation: ~typing.Callable[[~typing.Iterable], int] = <built-in function sum>, cache_dir: ~pathlib.Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based'), use_cache: bool = True)

參數

名稱 Description
code_query
預設值: <factory>
physical_qubit_calculation
預設值: <built-in function sum>
cache_dir
預設值: C:\Users\cloudtest\.cache\re3\round_based
use_cache
預設值: True

方法

provided_isa
required_isa

provided_isa

provided_isa(impl_isa: ISA, ctx: ISAContext) -> Generator[ISA, None, None]

參數

名稱 Description
impl_isa
必要
ctx
必要

required_isa

static required_isa() -> ISARequirements

屬性

physical_qubit_calculation

可呼叫[[Iterable], int] 函式,用於計算每輪空間需求(例如總和或最大值)的總物理量子位元數。預設為和。

僅限位置的參數

名稱 Description
iterable

參數

名稱 Description
start
預設值: 0

code_query

ISAQuery 查詢以列舉邏輯蒸餾單元的 QEC 代碼。 預設為 SurfaceCode.q()。

code_query: ISAQuery

cache_dir

用於快取計算出廠設定的路徑目錄。 預設為 ~/.cache/re3/round_based。

cache_dir: Path = WindowsPath('C:/Users/cloudtest/.cache/re3/round_based')

use_cache

bool 是否使用快取結果。 預設為真。

use_cache: bool = True