GeForceの父がCUDAの解説
http://journal.mycom.co.jp/articles/2007/09/13/nvidia/003.html
概要は別のサイトで数日前にありましたが、マイコミの記事は結構詳しくて面白いです。
で、話の内容はTesla*1とCUDA*2がメインだったみたいですね。
この記事を読むまで知らなかったのですが、C言語で書いたソースをCUDAのコンパイラでコンパイルしても、GPUネイティブの命令は生成されないみたいですね。
私が理解した範囲では、コンパイル時にCPUで実行するコードとGPUカーネルコード*3を生成。実際に実行するタイミングでGPUカーネルコードをGPUネイティブのコードに変換するらしいです。
で、GPUネイティブコードに変換するのはCUDAドライバで、こいつがGPU世代間の命令セットの差を吸収してくれる&GPUの仕様に応じて最適化したコードを吐くから、プログラマはGPUの世代や仕様を気にしなくていい、って事みたいです。
イメージとしてはJavaと似た様なものでしょうか。こっちもコンパイラが中間コードを吐いて実行時にネイティブコードに変換しますから。
ついでに、この記事を読んでようやくCUDAドライバの必要性が理解出来ました。
今までは「GPUネイティブのコードに変換するんだから、ドライバ不要なんじゃね?」と思ってましたから。