Skip to main content
IBM Quantum Platform

StarPreRouting

class qiskit.transpiler.passes.StarPreRouting

GitHub

ベース: TransformationPass

スターからリニアへのプレルーティング

このパスは論理最適化パスであり、 2q ゲートのみのスター接続サブサーキットを、スワップを伴う線形接続等価回路として書き換える。

例:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import StarPreRouting

qc = QuantumCircuit(10)
qc.h(0)
qc.cx(0, range(1, 5))
qc.h(9)
qc.cx(9, range(8, 4, -1))
qc.measure_all()
StarPreRouting()(qc).draw("mpl")
先のコードで出力された回路図。

このパスは、セクションIVで説明した同様のパスにヒントを得たものである:C. キャンベルら 「Superstaq: Deep Optimization of Quantum Programs," 2023 IEEE International Conference on Quantum Computing and Engineering (QCE), Bellevue, WA, USA, 2023, pp.1020-1032, doi: 10.1109/QCE57702.2023.00116.


属性

is_analysis_pass

パスが分析パスかどうかをチェックする。

パスが AnalysisPass,、パスがDAGを分析し、その分析結果をプロパティセットに書き込むことができることを意味する。 この種のパスでは、DAGの変更は許されない。

is_transformation_pass

パスが変形パスかどうかをチェックする。

パスが TransformationPass, の場合、そのパスはDAGを操作することはできるが、プロパティセットを変更することはできない(ただし、読み取ることはできる)ことを意味する。


方法

collect_all_matching_blocks

collect_all_matching_blocks(dag, min_block_size=2)

GitHub

与えられたフィルタリング関数filter_fnにマッチする全てのブロックを収集する。 これは、filter_fnにマッチしない最大のブロックを見つけ、次にfilter_fnにマッチする最大のブロックを見つけ、というように、未回収のノードがなくなるまで繰り返し見つける。 直感的に言えば、非マッチング・ノードの大きなブロックを見つけることは、後でマッチング・ノードの大きなブロックを見つけるのに役立つ。 オプション min_block_size は、収集するブロックの最小ゲート数を指定する。

デフォルトでは、ブロックは回路の入力から出力に向かう方向に収集される。 オプション( collect_from_back )により、この方向を変更することができる。つまり、出力から回路の入力に向かってブロックを集めることができる。

マッチするブロックのリストのみを返す。

collect_matching_block

collect_matching_block(dag, filter_fn)

GitHub

与えられたフィルタリング関数にマッチする入力ノードの最大ブロック(つまり、 _in_degree が 0 に等しいノード)を反復的に収集する。 その例としては、スワップ・ゲートのブロック、リニア・ゲート(CXとSWAP)のブロック、クリフォード・ゲートのブロック、1量子ビット・ゲートのブロック、2量子ビット・ゲートのブロックなどを集めることが挙げられる。 ここで「反復的」とは、ノードが収集されると、その直後の各ノードの _in_degree が1ずつ減少し、より多くのノードが入力されるようになり、現在のブロックに収集されるようになることを意味する。 集めたノードのブロックを返す。

determine_star_blocks_processing

determine_star_blocks_processing(dag, min_block_size)

GitHub

param dag: スターブロックを決定するダグ :type dag:param min_block_size: スターブロック内の2量子ビットゲートの最小数 :type min_block_size: int

戻り値

与えられたダグ内のスターブロックのリスト Union[ [ListDAGOpNode], [ListDAGDepNode] ]: 処理順序を指定する操作のリスト

戻りの型

[リストスターブロック]

パラメーター

execute

execute(passmanager_ir, state, callback=None)

GitHub

入力Qiskit IRに対して最適化タスクを実行する。

パラメーター

  • passmanager_ir (Any) – Qiskit IRを最適化する。
  • state (PassManagerState) – パスマネージャー自身によるワークフロー実行に関連する状態。
  • callback (Callable | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。

戻り値

Qiskit IRとワークフローの状態を最適化。

戻りの型

タプル [ Any, PassManagerState ]

name

name()

GitHub

パスの名前

戻りの型

str

run

run(dag)

GitHub

DAGCircuitでパスを実行する。 これはパス開発者によって実装される。

パラメーター

dag - パスが実行されるダグ。

レイズ

NotImplementedError - パスが未実装の場合。

star_preroute

star_preroute(dag, blocks, processing_order)

GitHub

DAG 内のスター ブロックと、これらのスター ブロック内のノードの処理順序を返します。:param dag: スター プレルーティングを実行する DAG。:type dag: DAGCircuit または DAGDependency。:param blocks: 指定された DAG 内のスター ブロックのリスト。:type blocks: List [StarBlock。:param] processing_order: 指定する操作のリスト。:type processing_order: Union[List [DAGOpNode]、 List [DAGDepNode] ]。:param processing order:

戻り値

qubit_mapping: プレルート後の最終的な量子ビットマッピング

戻りの型

new_dag

update_status

update_status(state, run_state)

GitHub

ワークフローのステータスを更新する。

パラメーター

  • state (PassManagerState) – 更新するマネージャーの状態を渡す。
  • run_state (RunState) – 現在のタスクの完了状況。

戻り値

パスマネージャーの状態を更新。

戻りの型

PassManagerState

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。