Fortranの人がCUDAの恩恵を受けるには
3つの方法があります。
どれもこれも実に一長一短です。一応、どれも試してみましたの感想を書きます。
その1:真面目に(?)CUDA Cで書く
当たり前ですが、C言語の知識が必須です。これが壁になる人もいると思いますが、一念発起してC言語を習得する価値はあると思います。
ボトルネックとなる部分のみをCUDA C化し、Fortranから呼び出せばいいのですから(ただ、ホスト-デバイス間のメモリ転送速度が問題になるかもしれませんが)、Fortranで書いた既存の資産(ライブラリとか)をすべてCまたはCUDA Cで書き直す必要はありません。
その2:CUDA化されたライブラリをFortranから呼ぶ
CUBLASやCULAといった、有名ライブラリのBLASやLAPACKをCUDA化したものが既にあります。ラッパを使えばFortranからも使用することが出来ます。
短所:用意されているライブラリしか使えない、性能が出ない場合にチューニングする自由度が低い
長所:(つぼにはまれば)もっともお手軽に性能を出せる
その3:PGI Fortranコンパイラを使う
既存のFortranのコードに指示行を入れてPGIのFortranコンパイラでコンパイルするだけでFortranをCUDA化出来るという魔法のような手段(PGIアクセラレータ)らしいですが、正直まだぐだぐだで実用には耐えないものだと思います。
短所:まだ開発レベル。実用には耐えない。コンパイラが有料。
長所:CUDAを勉強するよりも簡単で、CUDAライブラリを使用するよりは自由度が高い
CUDA Fortranについては、まだ未確認です。CUDA Cに近い使い方が出来て、性能を出せるならかなり良いと思います。
以下加筆:CUDA Fortranについて
2010-11-07現在、性能面についてはCUDA Cと大差ないです。ただCUDA Cに比べるとコンパイラがまだ開発段階のようで、謎のエラーが時々出ます。PGIのサイトに出ているのですが、毎月のようにコンパイラのbug fixが行われていて、それを読むと「こんな基本的な部分でコンパイルエラーが出るのかよ…」とびっくりします。ですが、PGIアクセラレータにくらべれば十分実用に耐えますし、チューニングすれば性能が出るというのはCUDA Cと同じです。
勿論、CUDA Cと同様にCUDAの知識が必要です。世の中を見渡すと、CUDA Fortranのドキュメントとか教科書はほとんどありません。大半がCUDA Cを対象にしています。CUDA Fortranを勉強するにはC言語を読めるようにはなる必要があります。。まあ、それでも、C言語が読めるようになるのと書けるようになるのは手間がずいぶん違うことを考えると、Fortranしか知らなかった人にとってはずいぶんCUDAが手元に来たと思います。