GPUでプログラミングはどうなった?

去年ぐらいにGPUの二大巨頭であるNVIDIAATI(現AMD)はそれぞれGPUへの低レベルなアクセス手段としてCUDAとCTM*1といったものを発表したわけだが、最近見かけない。まあそれ以前からあったGPGPU*2も非常に限られた分野でしか用いられなかったので、その後継たるこの二つも陽の目がなかなか当たらないようなところで活躍していそうな気もするが。

CPUとはまったく違った方向に発展しているGPUは、単精度実数でのピーク性能でならCPUを超える演算応力を持っていたりする。逆に倍精度は、今までグラフィックスの分野では必要とされてこなかったのでおまけ程度の性能しかない。さらに単純な条件分岐が苦手で盛大なパイプラインストールを巻き起こす。とまあ、明らかに一般の多種多様なプログラムを走らせるのには向かないが極一部の分野からすれば非常に有用なものとなる。その極一部の分野とは、きれいに配置されたデータを順に非常に反復的な処理方法で処理していく、つまりは統計処理やデータ解析いわゆるストリーム処理というものだ。

さてなぜにそんなストリーム処理とは門外漢のような私がこのような技術に注意を払っているかというと普段CPUを酷使しているエンコード処理がストリーム処理に他ならないからであるが、今のところx264をこのようなものを使って高速化しようとする人はいないみたいだ。いや過去にはいたようだが*3挫折しているようだ。まあまだx264は未完成であり機能強化も続いているので、それがひと段落着きとりあえずのバージョンナンバーが与えられてからぐらいでも遅くはないと思うが。