x86 で動作する Fortran コンパイラ

作成日:2003.01.30
更新日:2006.01.12

What's New
(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 の差は倍以上あると考えてよさそうだ。

コメント

トラックバック   [Trackback URL: http://www.nminoru.jp/cgi-bin/tb.cgi/programming__x86-fortran]
コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Twitter:@nminoru_jp