パーティショナーのまとめ

並列ループ・テンプレート parallel_for および parallel_reduce には、パーティショナー (ループを実行する手法) を指定するオプションの引数があります。次の表は、3 つのパーティショナーの説明および blocked_range とともに使用した場合の効果をまとめたものです。

パーティショナー

パーティショナー

説明

blocked_range(i,j,g) とともに使用した場合

simple_partitioner

チャンクサイズを粒度によって制限します。

g/2 ≤ chunksizeg

auto_partitioner (デフォルト)[4]

チャンクサイズを自動的に設定します。

g/2 ≤ chunksize

affinity_partitioner

チャンクサイズ、キャッシュ・アフィニティーおよび反復の均一分配を自動的に設定します。

パーティショナーが指定されない場合、auto_partitioner が使用されます。通常は、auto_partitioner または affinity_partitioner を使用してください。これらのパーティショナーは、利用可能な実行リソースに基づいてチャンクの数を調整します。また、affinity_partitioner は、指定された比率に分割する Range の機能 (「高度なトピック: 異なる種類の反復空間」を参照) を活用して、計算リソース間で反復をほぼ等しいチャンクサイズに分配します。

次の場合は simple_partitioner が便利です。

関連情報

[4] インテル® TBB 2.2 より前のバージョンでは、デフォルトが simple_partitioner でした。以前のデフォルトの動作にするには、TBB_DEPRECATED=1 を指定してコンパイルします。