フローグラフの基本: メッセージ・パッシング・プロトコル

フローグラフの基本: メッセージ・パッシング・プロトコル#

oneAPI スレッディング・ビルディング・ブロック (oneTBB) のフローグラフは、ノード間でメッセージを渡すことで動作します。ノードは、前のノードからのメッセージを受信して処理できない場合があります。グラフが最も効率良く動作するには、そのような状況が発生した場合、ノード間のエッジの状態がプルに変更され、後続ノードがメッセージを処理できるときに、メッセージが利用可能であるか確認するため先行ノードに照会できるようになります。エッジがプッシュからプルに反転しない場合、先行ノードは後続ノードがメッセージを受け入れるまでメッセージの転送を繰り返す必要があります。これではリソースが不必要に消費されてしまいます。

エッジがプルモードになると、後続エッジがビジーでない場合に、先行エッジからメッセージをプルしようとします。

  1. 先行処理にメッセージがある場合、後続処理はそれを処理し、エッジはプルモードのままになります。

  2. 先行ノードにメッセージがない場合、ノード間のエッジはプルモードからプッシュモードに切り替わります。

このプッシュプル・プロトコルの状態図は次のとおりです。

動的プッシュ/プルプロトコル。

image0