• ベストアンサー

openMPについて

gfortranでopneMPによる並列化を行いましたが、計算速度が低下してしまいました。 OS:linux OPENSUSE corei7です。並列化は use omp_lib をいれておいて、doループの前後に !$omp parallel !$omp do DOループ !$omp end do !$omp end parallel というふうにしただけです。 CPUの使用量は10%ぐらいから一気に90%ぐらいまで上がるのですが、 計算速度は倍以上になります。 原因は何でしょうか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

あと、共有変数とスレッド毎の変数についての記述が無いですが、ちゃんと入ってますか?

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

OpenMPはCで少し検討した程度です。 一般的に、並列処理は、それぞれが独立していると効率がよくなり、排他制御等を行うと遅くなります。 DOの中身がどうなっているか、記述が無いので断言はできませんが、その独立性がわるくて分割に向いてなかったり、ファイルや画面に出力してたり、それが混じらないように制御構文入れたりしてしませんか?

関連するQ&A