フローグラフの基本: バッファリングと転送#
oneAPI スレッディング・ビルディング・ブロック (oneTBB) のフロー・グラフ・ノードは、データ通信と依存関係の強制にメッセージを使用します。ノードがメッセージを後続ノードに正常に渡すと、そのノードではメッセージに対してそれ以上のアクションは実行されません。シングルプッシュとブロードキャスト・プッシュのセクションで説明したように、ノードのタイプ、ノードに接続されている後続ノードの数、およびメッセージがプッシュされるかプルされるかに応じて、メッセージは 1 つまたは複数の後続ノードに渡される場合があります。
ノードがメッセージを後続ノードに正常にプッシュできないことがあります。その場合、メッセージで何が起こるかはノードのタイプによって異なります。可能性は次の 2 つです。
ノードは後で転送するメッセージを保存します。
ノードはメッセージを破棄します。
ノードが転送されないメッセージを破棄し、この動作が望ましくない場合は、プッシュできないメッセージを保存するバッファーノードにノードを接続する必要があります。
メッセージがノードで保存されている場合、そのメッセージを別のノードに渡す方法は 2 つあります。
ノードの後続ノードは、
try_get()またはtry_reserve()を使用してメッセージをプルできます。後続ノードは
make_edge()を使用して接続できます。
try_get() がメッセージを正常に転送した場合、そのメッセージは保存されているノードから削除されます。ノードが make_edge を使用して接続されている場合、ノードは保存されたメッセージを新しい後続ノードにプッシュしようとします。