Fortranプログラムの高速化
Fortranプログラムを高速化する手法は、べき乗(A=B**2)を使わずに(A=B*B)とする、配列を効率的に使うなど、数々の手法があるようです。が、プログラマではないので、詳しいことは良く分かりません。
そこで、ちょっと調べてみたところ、たとえば Compaq Visual Fortran では、自動でそのような処理をおこなってくれる機能があることが分かりましたので、まとめておきます。
- 普通にプログラムを作る(上記『べき乗』とかは気にしなくて良さそう)
- Buildする
- ProjectのSettingダイアログを表示
- Fortranタブを表示
- 『Category:General』で、『Optimization Level:』の値をMaximum Optimizationsに変更する。
- 『Category:Code Generationl』で、『Generate Code For:』の値を使用するパソコンに合わせる。ここに載っていないXeonなどの64bitCPUの場合は『Host』にする
- 『Category:Optimizations』で、『Processor to Optimize for:』の値を使用するパソコンに合わせる。ここに載っていないXeonやCore2DuoなどのCPUの場合は『Host』にすると良いみたい
- OKボタンを押して、Project Settingダイアログを消す
- あとは、普通に実行するだけ(!マークを押す)
なにもOptimizeしない場合と比べるとで4分の1くらいに計算時間が激減しました。
なお、上記手順でプログラムが最適化されるのは、コンパイル時のみです。ソースは元のままですので、プロジェクトとして保存しなかった場合は、上記手順を踏み直す必要があります。