• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OpenMPによる並列処理で質問があります。)

OpenMPによるポアソン方程式の並列化で処理時間が逆に増える理由は?

このQ&Aのポイント
  • C言語でポアソン方程式を差分法で解くプログラムをOpenMPで並列化した際、スレッド数が2の時は処理時間が短くなったが、4,8と増やしていくと処理時間が逆に増えた。デュアルコア4プロセッサなのでコア数以上のスレッド数ではないはずなのに、その理由は何か?
  • 問題の解析領域は48×48と72×72の二つあり、どちらも4,8スレッドの場合は遅くなってしまった。ソースコードの並列化箇所はガウス・ジョルダン法を用いた連立方程式の解法である。もし問題の箇所があれば指摘してほしい。
  • 並列化したソースコードは、差分法によるポアソン方程式の解法であり、ガウス・ジョルダン法を使って連立方程式を解いている。forループが2つあるが、その内部にOpenMPのpragmaを使用している。指摘すべき点があれば教えてほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebun
  • ベストアンサー率50% (92/181)
回答No.1

OpenMPのことはよく知りませんが、並列処理を行うということは、 その処理後に同期処理も行われると思います。 ちなみに、上記の処理というのは、十分に時間がかかる処理でしょうか? 一瞬で終わるような処理を分割しても、同期処理のオーバーヘッドの方が重く、 遅くなったりするのではないかと思いますが。

atonao9
質問者

お礼

回答ありがとうございます。計測結果を再検討したところやはり同期処理の時間が関係していそうです。

関連するQ&A