作成日:2003.01.30
更新日:2006.01.12
(2006.01.12) 情報を更新。
(2004.04.21) PathScale EKO Compiler Suite を追加。
(2004.01.27) バージョンアップ等の情報を更新。
(2003.07.05) Compaq Visual Fortran は2003年9月で終了。
(2003.06.29) NAGWare、富士通の説明を変更。
(2003.05.17) コンパイラ情報を更新。
(2003.03.29) G77、OpenWatcom、Intel Fortran Ver7.0 の比較を追加。
x86 上で Linux/Windows 上で動作する Fortran の処理系
G77、OpenWatcom、Intel Fortran 7.0 の比較
x86 上で Linux/Windows 上で動作する Fortran の処理系
下記の表のSSE2 のカラムは SSE2 を使った自動ベクタライズ機能があるかどうか、
FDO のカラムはプロファイル結果を使ったフィードバック最適化があるかどうか、
MT のカラム は SMP/SMT(Hyper-Threading) 向けの自動並列化機能があるかどうか。
特に書かなければ F77/F90/F95 対応。
メーカ | 名称 | Win | Linux | SSE2 | FDO | MT | 評価版 | 備考 |
---|---|---|---|---|---|---|---|---|
Intel | Intel Fortran | ○ 9.0 |
○ 9.0 |
○ | ○ | ○ | ○ 30日 |
IA-32の本家 Intel の出している Fotran コンパイラ。 Windows / Linux とも性能チューニングソフト VTune と連係できるのが特徴。 (注記) Linux 版は v8.1 まで 非商用利用のライセンスの下 で 無料で使用することができる (IA-32 & IA-64)。v9.0 の公開は 2005年 3Q。 (2006.1.12) MacOS X for Intel に対応した ICC のβ版が 公開中。 |
Intel | Intel Visual Fortran | ○ 9.0 |
○ | ○ | ○ | ○ 30日 |
hp から買収した CVF を Intel Fortran Compiler (IFC) とマージして、 Intel Visual Fortran (IVF) として発売することになった。 いまのところ Windows 版だけ。 | |
hp | Compaq Visual Fortran | ○ 6.6B |
× | ○ | × | ? | ○ 30日 |
hp が合併した Compaq の名前を冠した Fortran だが、
元々は Compaq が吸収した DEC の Fortran。
旧称 Digital Visual Fortran で DVF と略称が広く知られている。 Linux 版はあるが Alpha 21x64用。 他に Tru64 UNIX(Alpha) と OpenVMS (VAX と Alpha)用もある (こちらがオリジナル)。 (追記) x86 版の Visual Fortran は Intel に売却され、 Intel Visual Fortran となるもよう。 |
Lahey | Lahey/Fujitsu Fortran | ○ 7.1 |
○ 6.2 |
? | ? | ○ | ○ 14日 |
米Lahey社の製品だが、コンパイラのコア部分は富士通の OEM。 Windows 版の v7.1 からは Win32 と .NET の両方に対応。 |
富士通 |
Fotran & C Package Parallel Fotran & C Package |
○ V3 |
○ V5 |
× | ? | ○ Parallel 版のみ |
○ |
自動並列化機能が売りの Fortran。
Lahey のものと同一らしい。 Solaris 版もある。 |
NAG | NAGWare Fortran | ○ 4.2 |
○ 5.0 |
? | × | × | ○ 30日 |
とにかく非常にサポート範囲の広い Fortran。
x86/FreeBSD、MacOS X/PowerPC、SPARC/Solaris、Alpha/Tru64UNIX、
PA-RISC/HPUX、AMD64/Linux、etc に対応。 (追記) NAGWare の実体は f2c のような Fortran → C のコンパイラ-コンパイラで、 バッグエンドは C コンパイラで処理しているようだ。 Fortran コンパイラとしての性能は望むべくもない。 体験版の入手ができるのは法人のみ。 |
Absoft |
Pro Fotran Pro FotranMP Fortran Compiler |
○ 9.0 |
○ 10.0 |
? | × | ○ MPのみ |
◯ 14日 |
Athlon / Pentium4 向けの最適化をうたっているが、
IA-32 では SIMD 命令には対応していない模様。
SMP 向け自動並列化ツールは別売り。 MacOS9、MacOS X(PowerPC)用、x86-64 用もあり。 Linux 版の v9.0 の名称は Fortran95。 |
Salford | Salford FTN95 / FTN77 | ○ | × | ? | ? | ? | ? | .NET 対応。 個人・非商用であれば FTN77 Personal Edition を 無料でダウンロードできる。 |
PGI | PGI compiler | ◯ 6.0 |
○ 6.0 |
○ | ? | ○ | ○ 15日 |
ASCI プロジェクトにも使われた並列化 Fortran。
おそらく x86 では最速。 ワークステーション / サーバ / クラスタ向けがあり、 RISC 系の石にも対応。 x86-64 用もあるようだ。 |
PathScale | PathScale EKO Compiler Suite 2.1 | × | ○ | ○ | ? | ? | ○ 30日 |
AMD64 用の C/C++/Fortran コンパイラだが IA-32 互換バイナリも生成できるようだ。 詳細不明。情報求む。 |
VERIDIAN | VAST | ○ | ○ | ? | ? | ? | ? | Fotran ソースを別の Fotran ソースに書き直す ソース to ソースのコンパイラ。 PowerPC/Linux、Alpha/Linux、 PowerPC/MacOS X、 RS/6000、Alpha/Tru64UNIX、Sparc/Solaris、MIPS/Irix、PA-RISC/HP に対応。 |
Apogee | Fortran Compiler | × | × | ? | ? | ? | ? | ここも専業コンパイラメーカ。 x86 用の Fotran は作っていないが、 SPARC / Solaris 用の F77/F90 コンパイラを作っているので 一応挙げる。 |
SUN |
Sun Studio 10 Sun Studio 11 |
Solaris のみ | ○ | ○ | ○ | ○ |
Solaris 対応の Fortran95 コンパイラ。 AMD64 や SSE2 にも対応。 Sun Studio 11 は無料ダウンロード可能。 |
|
ここより非商業の Fortran コンパイラ | ||||||||
OpenWatcom | Open Watcom C/C++ & Fortran | ○ 1.3 |
予定 | × | ? | × | 無償 |
商用の Watcom C/C++ & Fortran が
ベースとなった
オープンソースコンパイラ。
C/C++、FORTRAN77 コンパイラがある。
現在は、Windows / OS2 のみだが
Linux や FreeBSD への展開も考えているようだ。 |
GNU | G77 / G95 | ○ | ○ | × | × | × | 無償 | お馴染 GCC(GNU Compiler Collection) の一角。 |
Eric and Jack | f2c | ? | ? | × | × | × | 無償 |
Fortran77 のソースコードを C のソースに変換する
ソース to ソースのコンパイラ。
取りあえず Fortran77 のプログラムが動作するようになる。 |
あと SUN (SUN Workshop Fortran)、IBM (XL Fortran)、 SGI (MIPSPro Compiler)などが自社製チップの Fortran を、
NEC、日立が HPF を出している。
G77、OpenWatcom、Intel Fortran 7.0 の比較
手持ちの Fortran コンパイラg77、Open Watcom FORTRAN77(OWF)、Intel Fortran 7.0 (IFC) の性能を比較してみた。
ベンチマークはSPEC CPU2000。 その中で FORTRAN77 の 168.wupwise、171.swim、172.mgrid、173.applu、200.sixtrack、301.apsi をコンパイルして性能比較を行ってみた。
コンパイル & テスト環境は Pentium III (L1:16KB(I)+16KB(D)/L2:256KB(I+D)) 1GHz x2 / PC133 1GB / Windows 2000 Pro マシン。
SPEC に登録された 似たような環境を比較のため加える(base 値のほうで比較)。
コンパイラ名 | オプション |
---|---|
g77 cygwin 2.95.3-5 | -O3 |
Open Watcom FORTRAN77 ver1.0 | /FP6 /OX /OH /OL+ |
Intel Fortran 7.0 (-FDO) | -Qipo -QxK -O3 -G6 |
Intel Fortran 7.0 (+FDO) | +FDO: PASS1=-Qprof_gen PASS2=-Qprof_use -Qipo -QxK -O3 -G6 +FDO |
Intel Fortran 5.0 | +FDO: PASS1=-Qprof_gen PASS2=-Qprof_use -QxK -Qipo -O3 +FDO |
コンパイルを行ったところ OWF では、200.sixtrack がコンパイルできず、301.apsi の実行結果が不正となった。 また空白の出力の仕方が変で、そのままではリファレンスの出力結果と一致しない。
結果は以下の表のようになる。
Benchmark | g77 | OWF | IFC 7.0 (-FDO) | IFC 7.0 (+FDO) | IFC 5.0 | |
---|---|---|---|---|---|---|
168.wupwise | 203 | 186 | 379 | 388 | 401 | |
171.swim | 139 | 235 | 281 | 277 | 334 | |
172.mgrid | 67 | 106 | 235 | 234 | 215 | |
173.applu | 123 | 163 | 201 | 223 | 251 | |
200.sixtrack | 104 | N/A | 141 | 163 | 169 | |
301.apsi | 216 | N/A | 298 | 315 | 431 | |
168〜173 | 123 | 165 | 266 | 274 | 292 | |
Total | 132 | N/A | 244 | 257 | 284 |
g77 が 132、フィードバック最適化なしの IFC 7.0 が 244 となる。 OWF はコンパイルできないものが混じっているが、全部測定できたとすれば 177 ぐらいになると思われる。 IFC はフィードバック最適化の余地を残しているので、g77 と IFC の差は倍以上あると考えてよさそうだ。