2016-05-16 17 views
0

私は自分のコンピュータで並列計算を実行しています。私はプログラムがすべてのコアを使用しないようにしたいが、システムのために1つを自由に残す。 プログラムのスレッド数をプロセッサ上のスレッド数よりも少なく設定するにはどうすればよいですか?Openmpマシン上で利用可能なスレッド数を調べる

OMP_set_num_threads私はこの問題を解決できません。プログラムをオクターブ関数(oct-file)にコンパイルし、オクターブインタプリタで呼び出しました。 OMP_get_max_threads()は、環境変数などを取得します。したがって、この変数は呼び出しの間に保持され、その後の計算ルーチンへの呼び出しによって値がさらに減少します。最初のコールは3つのコアを使用し、2番目のコールは2番目のコールを使用します。

したがって、ハードウェアの利用可能なスレッド数はどのように決定されますか?

答えて

1

いつでもOMP_GET_NUM_PROCS()を使用して、使用可能なCPUコア(論理または物理、ハイパースレッディングが役割を果たすことができます)を取得できます。

OMP_get_max_threads()は、通常、同じ番号を返します。私はそれについてのあなたの記述を減らさない、おそらくあなたはいくつかの例を示す必要があります。

も参照してくださいhttps://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/302866

+0

まあ、それはオクターブインタプリタ内部のプログラムの開発を使用して、私によって引き起こされました。 'OMP_GET_NUM_PROCS()'を使って解決しました。 – Dimitry

関連する問題