トップ > ライブラリ > 計算機 > Fortranプログラミング

計算機・Fortranプログラミング(ベンチマークテスト)

ここでは、1990年代から2011年代までのFortranコンパイラーおよび実行環境である インテル系CPUを用いて、化学工学計算のベンチマークプログラムを実行し、その実行 時間を計測したデータを以下紹介します。

ベンチマークプログラム

ベンチマーク・プログラムとしては、収束計算である反応蒸留の計算プログラムを用い ています。化学工学の分野では、多段蒸留塔による「蒸留操作」は汎用シミュレータでは よく利用されます。汎用シミュレータでは、化学反応を伴う蒸留操作は、反応による非線型性、 気液平衡による非線型性があり、各段の気液組成および温度・圧力を同時に解かなければなりません。 解くべき方程式は、連立非線型方程式になります。

Fortranソースコードは、基本的に倍精度演算を採用しています。段数50段で、成分数 4、温度、蒸気流量の6変数、全変数は50x6=300元の連立非線型方程式の問題となります。 なお、連立線型方程式の解法等の数値計算ルーチンは、コンパイラー付属のライブラリ を使用せず、すべて自作コードを採用しています。

反応蒸留計算プログラムは、Fortranソースコードからコンパイルしています。ソース コードと計時用のサンプル入力データはほとんど変更していません。CPU時間の計測は 入力データのファイル読み込み、出力データのファイル書き込みなどInput/Output以外の 純粋に算術計算部分(途中経過の出力は無しとしています)を測定しています。測定は GETTIMルーチンを呼び出し、1/10sec(100ミリ秒)まで測定しています。

実行は、1990年代はDOS/V環境、Windows3.1環境ではDOS窓、その後のWindows環境でも DOS Promptで実行しています。OSはLinux(Redhat版)でも一部実行しています。

使用コンパイラー

Fortranコンパイラーとして、次のコンパイラーを使っています。

計算速度はこれらFortranコンパイラーのバージョンにも依存しますが、後述の表の各種バージョン でソースコードをコンパイルし、実行モジュールを作成しています。 IVF以外は、コードの最適化オプションはなく、シングルスレッドで走らせています。

使用CPU

1990年代以降に、ベンチマークで使用したCPUの種類を次に示します。

詳しくは、次のベンチマーク結果表をご覧下さい。

ベンチマークの結果

ベンチマーク・テストによる計算時間を表1に、年代順に記載しています。表の年代は 使用CPUの発売年月ではなく、ベンチマーク・テストを実施した年を示しています。1990年代の DOS/Vの時代ではコンパイラーはMicrosoft Fortranで、16ビットのアプリケーション(*.exe)を 出力するもので、16ビット環境でのテスト結果です。Microsoft Power Fortranから32ビットの アプリを生成できるようになり、最近のIVFコンパイラーで64ビットアプリ(IA64)に対応できる ようになりました。

この表から、反応蒸留プログラムによる計算時間の測定は、ほぼ1.0秒以下となり、測定 限界に到達しています。ほぼ10数年にわたるCPUとコンパイラーの進化の過程が分かります。 まさにMooreの法則を具現しています。

2008年以降のIVFによるコンパイルでは、最適化コンパイルが可能であり、コンパイル・ オプションをRemarks欄に記載しました。

表1:計算速度のベンチマーク結果
Date CPU Clock OS Compiler Version CPU Time [s] Remarks
1996 486DX2 66MHz DOS/V MS Fortran(*1) 175.5 16bit Application
Pentium 75MHz DOS/V MS Fortran(*1) 83.4
Pentium 133MHz DOS/V MS Fortran(*1) 48.1
Pen.Pro 200MHz DOS/V MS Fortran(*1) 39.3
Pen.Pro 200MHz Win31 MS PF V4 19.5 32bit Application
Pen.Pro 200MHz Win31 DVF V5 14.0
1999 Celeron 300A 300MHz WinNT/Dos Prompt DVF V5 9.1
Pen. II 400MHz WinNT/Dos Prompt DVF V6 7.2
2002 Pen. IV 1.6GHz WinNT/Dos Prompt F2C+V.Studio 2.8 Convert Fortran to C, MSC(*2)
2004 Pen. IV 1.6GHz WinNT/Dos Prompt DVF V6.5 2.5
Pen. IV 1.6GHz WinNT/Dos Prompt CVF V6.6C3 2.5
Pen. IV 1.6GHz WinNT/Dos Prompt IVF V8 1.4
Pen. IV 3.0GHz Linux IVF (*3) V8 1.8
Itanium II 1.5GHz Linux IVF (*3) V8 1.0
2008 Pent. IV 3.0GHz WinXP/Dos Prompt IVF V9.1 0.6 /c
Core 2 Duo 2.66GHz Linux IVF V9.1 0.4 /c
Celeron 3.06GHz WinXP/Dos Prompt IVF V9.1 0.6 /c /O3 /Qprefetch /QaxN
2009 Core i7, 920 2.67GHz WinXP64/Dos Prompt IVF V11.0 0.2 /c /O3 /Qprefetch /QaxN (IA32)
Core i7, 920 2.67GHz WinXP64/Dos Prompt IVF V11.0 0.2 /c /O3 (IA64) (*4)

この表を見ると、およそ10数年で計算速度はおよそ1000倍まで速くなっていること が分かる。ICの集積度とクロック周波数の増加、コンパイラーの性能向上が著しいこと が分かる。特に2004年のCVFからIVFへの変換だけで速度がおよそ倍(計算時間が半減) している。CPUを知り尽くしたIntelならではの性能向上と考えられる。

先頭に戻る