並列計算について
あまりパソコンに詳しい方ではありません。
今、linuxが入ったパソコン(CPU:Intel(R)Core(TM)i7 CPU970@3.20GHz,コア数12,
メモリ:5.8GiB)で数値計算をしています。コンパイラはgfortranです。OpenMPを使って、並列計算をしています。
例えば、スレッドを5使って一つのプログラムの計算したとします。次に別のプログラムをスレッドを5使って同時に計算したとします。
CPUモニタで確認すると、合計12スレッド中、10スレッドが使用率100%になります。
しかし、計算時間はそれぞれ倍ぐらいになってしまいます。結局、プログラムを1
つずつ計算するのと同じ時間がかかります。また、使用するスレッドは5ぐらいが最適であることがわかっています。(それ以上多くしても計算時間が多くなるだけ)。つまり、12スレッド中7スレッドは常に仕事をしていません。
原因、及び解決方法はあるでしょうか?