qre 套件
類別
| Application |
應用程式定義了一類量子計算問題,並結合一種產生特定問題實例痕跡的方法。 我們區分應用參數與追蹤參數。 應用程式參數定義了我們想要考慮的應用程式實例。 追蹤參數定義了如何產生追蹤。 它們改變了我們解決問題的具體方式,但不會改變問題本身。 例如,在量子密碼分析中,應用參數可以定義 RSA prime 產品的金鑰大小,而追蹤參數則決定用哪種演算法破解密碼學,以及其中的參數。 |
| Architecture |
量子硬體架構的抽象基底類別。 |
| Block | |
| Constraint | |
| ConstraintBound | |
| Encoding | |
| EstimationResult | |
| EstimationTable |
量子資源估計結果表。 擴充 初始化一個空的估計表,並預設欄位。 |
| EstimationTableColumn |
單一欄位 |
| EstimationTableEntry |
每個項目代表特定應用追蹤與架構 ISA 組合的一個帕累托最佳估計結果。 |
| FactoryResult | |
| ISA | |
| ISAContext |
上下文透過列舉傳遞,並保持共享狀態。 初始化該架構的 ISA 上下文。 |
| ISAQuery |
ISA 列舉樹中所有節點的抽象基底類別。 列舉節點定義了從架構出發並經 ISA 轉換(如錯誤更正方案)修改的 ISA 搜尋空間結構。 它們可以用像(sum)和 |
| ISARefNode |
指列舉語境中綁定的 ISA。 這個節點會從上下文中查詢綁定,並產生綁定的 ISA。 |
| ISARequirements | |
| ISATransform |
用於ISA間轉換的抽象基底類別(例如QEC方案)。 ISA 轉換定義了從所需輸入指令集(例如架構約束)到所提供輸出指令集(邏輯指令)之間的映射。 它支援列舉設定參數。 |
| InstructionFrontier | |
| InstructionSource | |
| LatticeSurgery |
晶格手術、痕跡轉換。 將痕跡轉換為適合格點手術基礎資源估計的形式。 |
| PSSPC |
基於泡利的計算軌跡轉換(PSSPC)。 將旋轉閘門及可選的CCX閘轉換為適合晶格手術資源估計的T態操作。 |
| Trace | |
| TraceQuery |
一個用來枚舉應用程式轉換後痕跡的查詢。 追蹤查詢串連一連串追蹤轉換,每個轉換都有可選的關鍵字參數以覆蓋其預設參數域。 |
| TraceTransform |
用於跡轉換的抽象基底類別。 |
函式
block_linear_function
block_linear_function(block_size, slope, offset=None)
參數
| 名稱 | Description |
|---|---|
|
block_size
必要
|
|
|
slope
必要
|
|
|
offset
|
預設值: None
|
constant_function
constant_function(value)
參數
| 名稱 | Description |
|---|---|
|
value
必要
|
|
constraint
建立指令約束。
constraint(id: int, encoding: Encoding = Encoding.PHYSICAL, *, arity: int | None = 1, error_rate: ConstraintBound | None = None, **kwargs: bool) -> Constraint
參數
| 名稱 | Description |
|---|---|
|
id
必要
|
指令 ID。 |
|
encoding
|
指令編碼。 物理(0)或邏輯(1)。 預設值: 0
|
|
arity
必要
|
<xref:Optional>[int]
教學水準。 若為 N,則假設指令具有可變的元數。 預設 為 1。 |
|
error_rate
必要
|
<xref:Optional>[<xref:ConstraintBound>]
錯誤率的限制。 |
|
**kwargs
必要
|
匹配指令必須具備的必要屬性。 有效的屬性名稱:距離。 設為 True,要求該屬性。 |
僅限關鍵字的參數
| 名稱 | Description |
|---|---|
|
arity
|
預設值: 1
|
|
error_rate
|
預設值: None
|
傳回
| 類型 | Description |
|---|---|
|
指令限制。 |
例外狀況
| 類型 | Description |
|---|---|
|
如果kwargs中提供了未知的房產名稱。 |
estimate
估算特定應用程式實例與架構的資源需求。
應用程式實例可能會回傳多個追蹤。 每個軌跡都會被軌跡查詢轉換,軌跡查詢會依序套用多個軌跡轉換。 每個轉換可能會回傳多個軌跡。 同樣地,架構的指令集會透過 ISA 查詢轉換,該查詢依序套用多個 ISA 轉換,每個轉換可能返回多個指令集。 估計會針對轉換後的跡與指令集(ISA)的每種組合進行。 結果會被收集到估計表中並回傳。
該集合僅包含相對於量子位元總數及總運行時間最優的結果。
Note
當 use_graph 設為 True(預設)時所採用的剪枝策略
透過比較指令空間、時間來過濾指令集(ISA)指令,
且誤差獨立。 然而,結果的總量子位元數
取決於工廠空間與執行時間之間的互動:
factory_qubits = 複本數 × factory_space 其中複本數是確定的
以count.div_ceil(運行時間/factory_time)計算。 因此,ISA
以每條指令指標為主的指令仍然可能
對一個全域帕累托最優結果有貢獻(例如,一個工廠
較長的時間可能需要較少的複製,導致總量子位元數減少)。 作為
結果,use_graph=真可能會漏掉某些結果,使得
use_graph=False 會被發現。 當 完備性為 時,使用 use_graph=False
必須通過帕累托邊界。
estimate(application: Application, architecture: Architecture, isa_query: ISAQuery, trace_query: TraceQuery | None = None, *, max_error: float = 1.0, post_process: bool = False, use_graph: bool = True, name: str | None = None) -> EstimationTable
參數
| 名稱 | Description |
|---|---|
|
application
必要
|
量子應用需估算。 |
|
architecture
必要
|
目標量子架構。 |
|
isa_query
必要
|
ISA 查詢用於從架構中枚舉 ISA。 |
|
trace_query
|
追蹤查詢用來枚舉應用程式中的追蹤。 預設值: None
|
|
max_error
必要
|
估計結果的最大允許誤差。 |
|
post_process
必要
|
若為真,則使用 Python 執行緒估計路徑(用於未來後處理邏輯)。 若預設為 False,則使用 Rust 平行估計路徑。 |
|
use_graph
必要
|
若為 True(預設),則使用 Rust 估計路徑,該路徑建立 ISA 圖,並在估計時修剪次優 ISA。 若為錯誤,則使用 Rust 估計路徑,該路徑不進行任何剪枝,僅列舉每個追蹤線的所有 ISA。 |
|
name
必要
|
<xref:Optional>[str]
這是估計的可選名稱。 若有標示,該欄位將作為結果表中所有條目的第一欄。 |
僅限關鍵字的參數
| 名稱 | Description |
|---|---|
|
max_error
|
預設值: 1.0
|
|
post_process
|
預設值: False
|
|
use_graph
|
預設值: True
|
|
name
|
預設值: None
|
傳回
| 類型 | Description |
|---|---|
|
一張包含最佳估計結果的表格。 |
generic_function
generic_function(func)
參數
| 名稱 | Description |
|---|---|
|
func
必要
|
|
instruction_name
instruction_name(id)
參數
| 名稱 | Description |
|---|---|
|
id
必要
|
|
linear_function
linear_function(slope)
參數
| 名稱 | Description |
|---|---|
|
slope
必要
|
|
plot_estimates
圖題估計結果顯示量子位元與執行時間。
建立對數-對數散點圖,x 軸顯示總運行時間,y 軸顯示物理量子位元總數。
資料 可以是單一 EstimationTable 或可迭代的表格。 當提供多個表格時,每個表格會被繪製為獨立的序列。 如果一個表格有 ( EstimationTable.name 透過 名稱 參數 estimate設定),則該表會被用作該系列的圖例標籤。
當 runtime_unit 為 None 預設時,x 軸使用人類可讀的時間單位刻度標籤,範圍從奈秒到數百秒不等。
當給定單位字串(例如 "hours"),所有執行時間都會縮放到該單位,x 軸標籤包含單位,而刻度則是純數字。
支援runtime_unit值:"ns", "µs" (或"us")、"ms", "s", "min", "hours""days""weeks", "months", 。 "years"
plot_estimates(data: EstimationTable | Iterable[EstimationTable], *, runtime_unit: str | None = None, figsize: tuple[float, float] = (15, 8), scatter_args: dict[str, Any] = {'marker': 'x'})
參數
| 名稱 | Description |
|---|---|
|
data
必要
|
一個 EstimationTable 或一個可迭代的 EstimationTable 物件來繪圖。 |
|
runtime_unit
必要
|
可選的時間單位可將 x 軸縮放到某個方向。 |
|
figsize
必要
|
尺寸(英吋)表示 |
|
scatter_args
必要
|
在繪製點時,還要傳遞 |
僅限關鍵字的參數
| 名稱 | Description |
|---|---|
|
runtime_unit
|
預設值: None
|
|
figsize
|
預設值: (15, 8)
|
|
scatter_args
|
預設值: {'marker': 'x'}
|
傳回
| 類型 | Description |
|---|---|
|
<xref:matplotlib.figure.Figure>
|
包含劇情的圖形。 |
例外狀況
| 類型 | Description |
|---|---|
|
如果沒有安裝 matplotlib, |
|
|
如果所有資料表都是空的或 runtime_unit 則無法被識別。 |
property_name
property_name(id)
參數
| 名稱 | Description |
|---|---|
|
id
必要
|
|
property_name_to_key
property_name_to_key(name)
參數
| 名稱 | Description |
|---|---|
|
name
必要
|
|