RoundBasedFactory クラス
ラウンドベースの蒸留パイプラインを使用して T ゲート命令を生成するマジック ステート ファクトリ。
この工場では、蒸留ユニット ("15 対 1 RM の準備" や "15 対 1 のスペース効率" など) の組み合わせを調べて、目標誤差率を達成しながら時間とスペースを最小限に抑える最適な構成を見つけます。 物理レベルの蒸留 (入力 T ゲートが物理的にエンコードされている場合) と論理レベルの蒸留 (表面コードによる格子手術を使用) の両方をサポートします。
蒸留ラウンドの成功確率を考慮するために、ファクトリは、各ラウンドが満たす必要がある失敗確率要件 (既定値は 1%) を使用してパイプラインをモデル化します。 ラウンドあたりの蒸留ユニット数は、この要件を満たすように調整され、全体的な空間要件に影響します。
領域の要件は、ユーザーが指定した関数を使用して計算されます。この関数は、ラウンドごとのスペース (合計や最大値など) を集計します。
sum関数は、量子ビットがラウンド間で再利用されないケースをモデル化しますが、max関数は、量子ビットがラウンド間で再利用されるケースをモデル化します。
論理レベルの蒸留ユニットの列挙では、ファクトリはユーザーが指定した ISAQuery (既定では SurfaceCode.q()) に依存して、さまざまなサーフェス コード構成とそれに対応する格子手術命令を調べることができます。 これらはユーザーが提供する必要があり、指定された実装 ISA から自動的に派生することはできません。必要な命令のサブセットのみを含めることができるからです。 ユーザーは、指定されたクエリが、このファクトリが使用されているアーキテクチャと一致していることを確認する必要があります。
効率を高めるために、結果はディスクにキャッシュされます。
参考資料:
Sergei Bravyi, Alexei Kitaev: 理想的なクリフォード ゲートとノイズの多いアンシラを使用したユニバーサル量子計算, 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)
パラメーター
| 名前 | 説明 |
|---|---|
|
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]
パラメーター
| 名前 | 説明 |
|---|---|
|
impl_isa
必須
|
|
|
ctx
必須
|
|
required_isa
static required_isa() -> ISARequirements
属性
physical_qubit_calculation
Callable[[Iterable], int] 合計や最大値など、ラウンドごとの空間要件から物理量子ビットの合計を計算する関数。既定値は合計です。
位置指定のみのパラメーター
| 名前 | 説明 |
|---|---|
|
iterable
|
|
パラメーター
| 名前 | 説明 |
|---|---|
|
start
|
規定値: 0
|
code_query
論理蒸留単位の QEC コードを列挙する ISAQuery クエリ。 既定値は 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 キャッシュされた結果を使用するかどうか。 既定値は True です。
use_cache: bool = True