アカウント名:
パスワード:
今は無きbitの別冊か何かでこの行列演算拡張を知ったとき, 丁度仕事でHPCをやっていたこともあって, いかにFORTRANらしいというかHPC向けの機能だと思いました.
この機能って, 確かに書く方から見てもエレガントに書けるという利点が有るのですが, コンパイラ側から見ても余計なプログラム上の意味解析を行わずにダイレクトに並列化・ベクトル化に持っていけるので楽なんですよね. 逆に言えば, 行列演算記述が難しいプログラムはそれだけチューニングが難しいってことで.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
2get成功! (スコア:2, 興味深い)
これって、つまりそれだけFortran90/95のコミュニティーが育ってきたということなんでしょうか?
私、Fortran90のコンパイラが出始めたころに新機能がどんなものか見るためだけに使ったことがあるのですが、あまりに拡張されすぎて
あぁ、「ン」が消えてるんですよ。「ビーフン・カレー」ね。
Re:2get成功! (スコア:5, 興味深い)
情報科学屋ではないので事実誤認があるかもしれませんが,
ここ 5 年くらいの流れを見ていると,分散メモリ型の大型計算機が
ベクトル型スーパーコンピュータを置き換えるように普及していったことに
ともない,Intel が Linux 版非商用無料の Fortran95 コンパイラ (ifc) を
配布することで,それを後押しした感があります.
外出先でのノートPC,研究室のWS,そして計算機センターの大型機まで
同じコンパイラを放り込んでおいて使えるということは,
デバッグなど実質的な作業過程において相当便利なことだと思います.
77でなく90を使うことのメリットは,まずはソースの書きやすさかと.
行番号とさようなら,構造体,do .. end do で済むループ,
多次元配列の演算が A = B + C で済んでしまうなど楽,
allocate で動的配列の生成,include などプリプロセスの充実,
など,Fortran77には戻れません.
で,数値計算のソースコードを書くのにFortranを使う理由ですが,
今は,上に述べた ifc の存在と,ベクトル化,並列化のときに
便利な言語であること,その計算機環境において最も高速なコンパイラと
ライブラリが Fortran 用としてチューニングされている,
ということに尽きますかね.
HIT さんのページを見たら,熱いものが伝わるかも.
http://www.hpc.co.jp/
書きやすさ (スコア:3, 興味深い)
> 多次元配列の演算が A = B + C で済んでしまうなど楽,
これ良いですよねー。ベクトルや行列の計算が非常にすっきり書けるし、その分エンバグも少ない。
ご存じない方のために簡単に説明しますと、
for (i = 1; i < n; i++) { B[i] = A[i-1] + A[i] }
for (i = 1; i < n; i++) { A[i] = B[i] }
という、自分の周囲の値から次のステップの値を決めるという頻出パターンが、
A(1:n-1) = A(0:n-1) + A(1:n)
と書けるという事です。一時保存用の配列(B[i])も不要です。
Fortran90は、数値計算に特化して進化したので、UIとか文字列操作など不得意な部分が重要でないなら、良い選択肢だと思います。
ちなみに、旧航空宇宙技術研究所が(会員制ながら)ソースを公開して開発しているCFDコードUPACS [ista.jaxa.jp]は、Fortran90で書かれているそうです。
訂正 (スコア:1)
× A(1:n-1) = A(0:n-1) + A(1:n)
○ A(1:n-1) = A(1:n-1) + A(0:n-2)
このように、配列の始めと終わりの部分は依然として間違えやすいわけですが、それはどの言語でも同じと言うことで。
Re:書きやすさ (スコア:1)
今は無きbitの別冊か何かでこの行列演算拡張を知ったとき, 丁度仕事でHPCをやっていたこともあって, いかにFORTRANらしいというかHPC向けの機能だと思いました.
この機能って, 確かに書く方から見てもエレガントに書けるという利点が有るのですが, コンパイラ側から見ても余計なプログラム上の意味解析を行わずにダイレクトに並列化・ベクトル化に持っていけるので楽なんですよね. 逆に言えば, 行列演算記述が難しいプログラムはそれだけチューニングが難しいってことで.
Re:書きやすさ (スコア:0)
こういうの良いですね。
これに比べて、最近のC++は、STLを使いすぎて常人には理解できない領域に達しつつあるのはいかがな物かと・・・。
演算子オーバーロードで行列の計算の記述が簡単とか言っていた時代は平和だったなぁ・・・。