21

Intel TBBは、並列セクションに使用するスレッドの数をどのように選択しますか?

ある種の仕様はありますか?

4

3 に答える 3

22

TBBバージョン2.2以降、タスクスケジューラは自動的に初期化され、実行時に使用するスレッドの数を処理します。手動でその数を変更する場合は、次のいずれかの方法を使用できます。

スケジューラーを作成するときに、スレッド数を次のように指定できます。

tbb::task_scheduler_init init(nthread);

それ以外の場合は使用できます

tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);

この場合、tbbスケジューラーはCPUコアと同じ数のスレッドを作成します

于 2010-10-29T20:31:33.263 に答える
12

TBBにプール内のスレッド数を決定させることをお勧めします。通常、マシン上の論理CPUと同じ数のワーカースレッドが作成されます。tbb::task_scheduler_initのクラスリファレンスを参照してください。

ある時点で存在する、またはタスクを実行しているワーカースレッドの数を確認するのは簡単ではありません。これは、意図的な設計上の選択です。IntelのTBB並列プログラミングコースから:

使用可能なスレッドの数を知るにはどうすればよいですか?

聞かないで!

  • スケジューラーでさえ、実際に使用可能なスレッドの数を知りません。
  • マシン上で実行されている他のプロセスがある可能性があります
  • ルーチンは、他の並列ルーチン内にネストできます
于 2013-04-22T02:20:29.167 に答える
0

ドキュメントには、「ハードウェア構成に依存する」とだけ書かれています。おそらく、使用可能なCPUコアの数だけです。

于 2010-09-24T12:23:00.100 に答える