非商用ならフリーの Fortran90 を使ってみた(VAST/f90)
今どき fortran ? などと言うなかれ。
分子シミュレーションなどの数値計算では速度が勝負。
大型計算機の多くでは今でも fortran が現役です。
なんで fortran を使うか? というのは、MLや net news でよく目に
しますが、わしはその詳細を語る言葉がない(笑)。
実際に使っていて思うことは、
・大型計算機ではライブラリやコンパイラが良くチューンアップされている。
・確かに今まで(書いていた|書かれてきた)資産が豊富
ということです。
うーん、今まで何度も C や C++ で書き直してみたが、書き方がへぼいのか
目に見えて処理が高速になったためしがないんですわ。
C++ にあって fortran にないものといえば、ポインタや構造体や
クラスですが、それらを使ってきれいに書こうとすると実行速度が意外に
あがらない。逆に LOOP の最適化(今使っている SR2201 だと疑似ベクトル化など)が
fortran だと馬鹿ちょんで出来てしまうんです。
わしらは Monte Carlo 法で計算しているのですが、そこで使う
乱数生成のライブラリ関数が fortran で使いやすいようになっている。
それから、たとえば C から fortran の関数を呼ぶと、疑似ベクトル化が
うまくいかない。うーむ。。
で、fortran を使うわけですが、大型計算機では Fortran90 でプログラムを
書いています。f90 は何が良いかというと、処理系に依存する話も含まれます
が、たとえば変数を表すの文字の数の制限がなくなる、ですとか、DO LOOP で
do i=1,n
A(i)=B(i)+2*C(i)
10 continue
と f77 なら書くところを
do i=1,n
A(i)=B(i)+2*C(i)
end do
continue 文を減らせるし、しまいには
A=B+2*C
と、配列の演算がコンパクトに書けます。
配列を扱う関数も増えていたりします。
それから、ビット操作の演算が出来ます
(頭がすっかりCな方はなんでも今更な話かもしれませんが)。
で、f90 のソースが増えて来ると、デスクトップ用の Linux Box にも
なんとなく Fortran90 が欲しくなってきます。
そこで VAST/f90 というのがあると聞いて使ってみました。
Pacific-Sierra Research
ここから、vf90_per.tar をいただいて来ました。
非商用ならバイナリーフリーで使えます。tar xf すると、f90 ,vf90 という
実行ファイルがありますので、これを単純に /usr/local/bin にコピーして
libvast90.a というライブラリがあるので、これを /usr/local/lib に
コピーして、
# ldconfig
します。すると、あらあら不思議、
% f90 hoge.f
で、Fortran90 のソースをコンパイルすることが出来ます。
実行速度は g77 と変わりません。これは、この f90 は Fortran90 の
ソースを vf90 で fortran77 のソースに書き換えて、g77 で
コンパイルしているだけのようだからです。実際、vf90 というコマンドは
ソースの書き換えだけを行います。これは f77 しか動かない環境に
f90 で書いたソースを使うのにとても便利です。
% vf90 hoge.f
を実行すると、Vhoge.f というファイルを吐きます。これは
f77 でコンパイル出来るソースです。
パッケージに入っている 90to77.ps に、詳しい説明があります。
使用した感想の詳細は今度書きます。