2012-07-27 12 views
6

デフォルトでOpenMP指令:OMP - プロセッサの数より多くのスレッド?

opm_get_num_threadsプロセッサ/コアに相当するスレッド数を示します。

私は8コアマシンを持っているので、私に8スレッドを与えます。それは最大ですか?私が意図的に8以上を指定すると、8より多くのスレッドを得ることができますか?

おかげ

答えて

7

あなたが望むようにできるだけ多くのスレッドを設定することができます。

int threads = 16; 
omp_set_num_threads(threads); 

http://msdn.microsoft.com/en-US/library/e16bady3%28v=vs.80%29

しかし、あなたは論理コアよりも多くのスレッドを使用しての欠点を認識していることを確認しシステム内で

+2

欠点を実際にはっきりと述べるのではなく、実際にそれを共有するように気をつけますか? –

+4

@LexiRスケジューリング、コンテキストスイッチ、キャッシュ競合など、スレッドを処理するときにオーバーヘッドが発生します...論理コアより多くのスレッドを使用することは決してよいとは言いません。しかし、それが悪用された場合に何が起こるかを知ることは有益です。 – Mysticial

+2

コード内のスレッド数を修正するのはなぜですか?良い古い環境変数 'OMP_NUM_THREADS'はどうでしょうか? –

関連する問題