※ ChatGPTを利用し、要約された質問です(原文:並列計算について)
並列計算について
このQ&Aのポイント
並列計算の効果を最大化するための方法として、スレッド数の最適化が重要です。
現在の状況では、使用するスレッド数が最適ではないため、プログラムの実行時間が倍増してしまっています。
この問題を解決するためには、スレッド数を適切に設定することが必要です。
あまりパソコンに詳しい方ではありません。
今、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スレッドは常に仕事をしていません。
原因、及び解決方法はあるでしょうか?