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

インテル® スレッディング・ビルディング・ブロック (インテル® TBB) のフローグラフは、ノード間でメッセージの受け渡しを行うことで動作します。場合によっては、ノードはプレデセッサーからメッセージを受け取り、処理できないことがあります。その場合、グラフが効率良く動作するように、ノード間のエッジの状態は pull に変わります。そして、サクセサーはメッセージを処理できるようになると、プレデセッサーに利用可能なメッセージを照会します。エッジが push から pull に変わらない場合、プレデセッサーはサクセサーが受け付けるまで繰り返しメッセージを転送しなければなりません。これは、不必要にリソースを消費することになります。

エッジが pull モードになった後、サクセサーはビジーでなくなると、プレデセッサーからメッセージを pull しようとします。

  1. プレデセッサーにメッセージがある場合、サクセサーはそれを処理し、エッジは pull モードのままになります。
  2. プレデセッサーにメッセージがない場合、ノード間のエッジは pull モードから push モードに変わります。

以下に、この push / pull プロトコルの状態図を示します。

動的 push / pull プロトコル
動的 push / pull プロトコル

詳細は、デベロッパー・リファレンスの「メッセージ・パッシング・プロトコル」を参照してください。

関連情報