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