0

私はFortranで書かれたプログラムを持っていて、100を超えるサブルーチンを持っています。ただし、open-mpコードが存在する約30のサブルーチンがあります。これらのサブルーチンをコンパイルするための最良の手順は何でしょうか。すべてのファイルを使用して一度にコンパイルすると、openmpでコンパイルされたコードの実行速度がopen-mpのないコードよりもさらに遅くなることがわかりました。open-mpタグを使用してサブルーチンを個別にコンパイルする必要がありますか?これらの条件下でのベストプラクティスは何ですか?

どうもありがとう。

よろしく、Jdbaba

4

1 に答える 1

1

OpenMP対応のコンパイラーは、OpenMPプラグマ(行頭のコメント記号の後のオープン記号)を探します。したがって、OpenMP対応コンパイラーでコンパイルされたOpenMPコードのないソースは、正確または非常に近いオブジェクトファイル(および実行可能ファイル)になります。

編集:以下のHristo Ilievが述べているように、OpenMPを有効にすると、たとえば、アルゴリズム(並列でより効果的)と最適化が異なる可能性のあるライブラリのOpenMPバージョンを使用することにより、シリアルコードに影響を与える可能性があることに注意してください。

ほとんどの場合、ここでの問題はコードアルゴリズムに関連しています。または、OpenMPバージョンと非OpenMPバージョンを比較するときに、同じ最適化フラグを使用してコンパイルしなかった可能性があります。

于 2013-01-31T07:50:21.957 に答える