1

私はしばらくの間、プログラムを最適化しようとしています。100 以上のサブルーチンがあります。これまでインテル Fortran コンパイラーで使用した最適化フラグは次のとおりです。

Optimization flag Time of completion
-c                     0.190 hr
-O3                    0.185 hr
-fast                  0.155 hr

そのため、最適化フラグ「-fast」を使用すると、18.42% の速度を得ることができました。プログラムをさらに高速に実行できるようにするための最適化フラグが他にあるのではないかと考えていました。現在、問題の 1 つで O2 フラグだけを使用してプログラムを実行したところ、完了するまでに約 25 時間かかりました。私は本当に計算効率を上げる必要があります。

https://support.scinet.utoronto.ca/wiki/images/7/77/Snug_techtalk_compiler.pdfから「-fast」フラグに関する情報を見つけました

Linux で intel fortran 13.1 コンパイラを使用しています。

どんな助けでも大歓迎です。

どうもありがとう。

よろしくお願いします、

ジババ

4

1 に答える 1

3

使用しているコンパイラはわかりませんが、リンクでIntelを暗示しています。Intel ifort を使用すると-parallel、自動並列化を試すことができます。ある時点を過ぎると、コンパイラはソース コードに対して最善を尽くし、ランタイムをさらに短縮するには、不適切なコーディングの決定を改善するか、アルゴリズムを改善する必要があります。具体的な提案を提供するための質問から得た情報はありません。「プロファイリング」とは、プログラムがランタイムを費やす場所を特定することです。プログラムがサブルーチン A で実行時間の 1% しか費やさない場合、サブルーチン A を 10 倍速く実行しても意味がありません。全体的な改善はほとんど得られません。プログラムが実行時間の 80% または 50% または ... を費やすサブルーチンで作業することをお勧めします。

于 2013-02-01T07:36:06.347 に答える