qre 套件

類別

Application

應用程式定義了一類量子計算問題,並結合一種產生特定問題實例痕跡的方法。

我們區分應用參數與追蹤參數。 應用程式參數定義了我們想要考慮的應用程式實例。 追蹤參數定義了如何產生追蹤。 它們改變了我們解決問題的具體方式,但不會改變問題本身。

例如,在量子密碼分析中,應用參數可以定義 RSA prime 產品的金鑰大小,而追蹤參數則決定用哪種演算法破解密碼學,以及其中的參數。

Architecture

量子硬體架構的抽象基底類別。

Block
Constraint
ConstraintBound
Encoding
EstimationResult
EstimationTable

量子資源估計結果表。

擴充 list[EstimationTableEntry] 並提供可配置欄位以顯示估計資料。 預設情況下,表格包含 量子位元、 執行時間 (以 顯示為 pandas.Timedelta)及 錯誤 欄位。 還可以新增或插入欄位,且 add_columninsert_column。

初始化一個空的估計表,並預設欄位。

EstimationTableColumn

單一欄位 EstimationTable的定義。

EstimationTableEntry

EstimationTable一個 .

每個項目代表特定應用追蹤與架構 ISA 組合的一個帕累托最佳估計結果。

FactoryResult
ISA
ISAContext

上下文透過列舉傳遞,並保持共享狀態。

初始化該架構的 ISA 上下文。

ISAQuery

ISA 列舉樹中所有節點的抽象基底類別。

列舉節點定義了從架構出發並經 ISA 轉換(如錯誤更正方案)修改的 ISA 搜尋空間結構。 它們可以用像(sum)和+(product)這類*運算子組合,建立複雜的列舉策略。

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
必要
int

指令 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
必要

尺寸(英吋)表示 (width, height)為 。

scatter_args
必要

在繪製點時,還要傳遞 matplotlib.axes.Axes.scatter 額外的關鍵字論證。

僅限關鍵字的參數

名稱 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
必要