2017-01-16 11 views
0

最近OpenMPを学んでいます。私はインターネット上で多くのブログを読んでおり、それらを読んだ後、私は "ループ並列化のスレッド数"についてよく疑問を抱いています。以下の例を挙げるCでOpenMPを使用するループ並列化のスレッド数

この例では、並列化に使用されているスレッドの数です。これは標準的な方法ですか、それとも明示的にスレッド数を教えてください。

+0

かどうかのように実行することができ、スレッドの特定の数(ここでは2)でプログラムを実行するには、以下の

#pragma omp parallel private(tid) { tid=omp_get_thread_num(); if(tid==0){ nthreads=omp_get_num_threads(); printf("Number of threads = %d\n",nthreads); } 

のようなスレッドの数を印刷することができます特定の数のスレッドを強制的に使用したい、あるいはopenmpがそれを決めるようにしたいのですが、それは... 'omp_get_num_threads()'によってスレッドの数を常に問い合わせることができます –

+0

特定のスレッド数私が心に留めている要因は何か。例えば、私のシステムに2つのコアを持つプロセッサがあるとしたら、スレッド数を2に制限しますか? – DeoChandra

+0

実際のコアの数はスレッド数を制限しません。 2つのコアマシンでは、4つのスレッドを持つことができますが、それらのスレッドがすべてのコアを占めることは決して保証されません。スレッドは論理エンティティなので、すべてが1つのコアで実行される4つのスレッドで終わることができます。 –

答えて

0

スレッドの数を指定する必要があります。そうしないと、OPENMPは自動的に使用可能なものを使用します。 あなたはbashで次の

OMP_NUM_THREADS=2 ./program 
関連する問題