並列ループがワークスチール・イベントに基づいて範囲の細分化を最適化するように指定します。
#include "tbb/partitioner.h"
class auto_partitioner;
auto_partitioner を含むループ・テンプレートは、ワークスチールのための十分な機会を提供しながら、範囲分割を最小限に抑えようとします。
範囲分割は、最初は S サブ範囲に限定されます。ここで、S は task_scheduler_init または task_arena によって指定されたスレッド数に比例します。各サブ範囲は、アイドルスレッドによってスチールされない限り、さらに分割されることはありません。スチールされた場合は、追加のサブ範囲を作成するために再分割されます。このため、auto_partitioner を含むループ・テンプレートは、負荷のバランスをとる必要がある場合のみ、追加のサブ範囲を作成します。
並列ループで auto_partitioner と blocked_range を使用する場合、ボディーに blocked_range よりも大きな粒度のサブ範囲が渡されることがあります。このため、粒度はサブ範囲の上限であると仮定することはできません。上限が必要な場合は、simple_partitioner を使用してください。
namespace tbb { class auto_partitioner { public: auto_partitioner(); ~auto_partitioner(); }; }
メンバー | 説明 |
---|---|
auto_partitioner() |
auto_partitioner を構築します。 |
~auto_partitioner() |
この auto_partitioner を破棄します。 |