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