7

今日、私はQUADPACK(1987年に最後に更新された)などのFORTRAN 77で書かれたいくつかの非常に人気のある数値ライブラリからコードを読んでいましたが、大量の作業以外に、Fortran90でそれらのライブラリを書き直さない理由があるのではないかと思いました。自由形式のソース、GO TOを忘れてしまう可能性のあるより優れた制御構造、ベクトル化、インターフェースなど、Fortran 90が言語にもたらした大きな改善を考えると、

FORTRAN 77コンパイラがより最適化されたコードを生成するためですか、並列実行に適しているのでしょうか?たとえば、まだ8年しか経っていないFortran 2003についても話していません。Fortran90について話しているので、十分に普及しており、コンパイラーの準備ができていると思います。とにかく、私は業界とは接触していません。

編集:jannebは正しいです:LAPACKは実際にはFortran90で書かれています。

4

4 に答える 4

18

さて、「pst」が述べたように、「それがもたらすであろう大量の仕事」はかなり大きな理由です。

さらにいくつかのマイナーなポイント:

  • LAPACKは、最新バージョンがF77コンパイラでコンパイルされなくなったという意味で、最近ではFortran90です。そうは言っても、それは書き直しにはほど遠いものであり、変更されたのはほんのわずかです。

  • あなたが言及するF90の機能のほとんどは、堅牢なプログラムをより簡単かつ迅速に作成できるようにします。結果として得られるプログラムをこれ以上高速化する必要はありません。

  • 無料のF90コンパイラが利用できなくなったのはそれほど昔のことではありませんでした(多くの人がg77を使用していました!)。

  • F77コンパイラは、通常、F90コンパイラよりも高速なコードを生成しません。他の理由がない場合は、廃止されている可能性が高く、最新のCPU用に最適化できないためです。最新のFortranコンパイラーは、ポインターなどを多用する同等のF90プログラムよりも、F77から高速なコードを作成する可能性がありますが、それは問題のプログラムに大きく依存します(たとえば、ポインターやより洗練されたデータ構造を使用すると、より適切に使用できる場合があります)アルゴリズムにより、F90プログラムは、CPU算術ユニットの平均使用率が低くても実行できる場合でも、より高速に結果を生成できます。

  • ベクトル化は、これがF90 +配列構文を意味する場合、より高速なコードを許可するのではなく、ほとんどの場合プログラマーの利便性の問題です。有能なコンパイラは、同等のDOループも同様にベクトル化します。

于 2012-01-02T22:53:58.717 に答える
6

うまく機能するものを(おそらく)改善するために大量の作業を行う理由はありません。Fortran 90は多くの新機能を導入しましたが、言語は変更されていないことに注意してください。Fortran 90StandardはFORTRAN77と下位互換性があることに注意してください。最新のコンパイラーは、FORTRAN77コードも同様に最適化できます。Fortan 90には、効率を妨げる機能(ポインターなど)が導入されており、HPCなどの実行時間を気にする場合は避ける必要があります。

したがって、実際には違いはありません。最新のコンパイラーの場合、適切に記述されたFORTAN 77も同様に最適化可能であり、アイシングのないケーキのようなものです。ここで、Fortran 90以降の場合、アイシングは見た目よりも見栄えが良くなります。プログラマーにとっては便利ですが、必ずしもプログラムの効率が向上するとは限りません。

于 2012-01-02T22:56:33.177 に答える
5

Fortran77プログラムがより高速である可能性がある主な理由が1つあります。

割り当てられた配列(Fortran 90)は、コンパイル時に宣言された配列よりもはるかに低速です。両方がメモリ内の同じ場所に配置されることはありません。これが、Fortranでのスタックとヒープのメモリ管理です。

たとえばここを参照してください

そうは言っても、Fortran90+は高速の「オールインブロック」配列操作を備えています。私はgcc-fortran(gfortran)の大ファンであり、コンパイルオプションがなく、サイズNの配列の場合

a = a + 1

の4倍の速さです

do i = 1 , N
  a(i) = a(i) + 1
end do

このベンチは、私にとって、私のマシン上で、最適化オプションのないgfortran上にあり、これがプロのベンチマークであるという主張はありません。

割り当ての「問題」(これは問題ではありませんが機能です)は、アーキテクチャー、コンパイラー、またはFortran標準に関連するものではありません。

于 2012-01-03T20:57:00.470 に答える
1

F77プログラムが同等のF90プログラムよりも遅いか速いかは、新しい構文で書き直すことで議論できますが、今は無視しましょう。

ただし、考慮すべきことは、速度だけを気にする人はいないということです。人々は、それが関連性があり、ビジネスが有益である場合にのみ実行の速度を気にします(これにはもっと良い用語があると確信していますが、今は何も思い浮かびません...おそらく費用対効果が高いです)。

これらの2つ(かなり人気のあるライブラリ)はまだF77にあるので、それらを書き換えるコストは、得られる利点、実行速度の点での利点、およびその費用対効果の点での利点を上回るというのが一般的な意見であることは明らかです。プロセス全体。

于 2012-01-02T22:53:55.927 に答える