CUDAやばいなあ、の続き

MTとmixiで書いたのを試しにこっちにも貼ってみる。

ゼミがなかったので先生とかと話はしてないんだけど、まぁ続き。

CUDAをGPUアーキテクチャとして見たとき、仮にCUDAがGPUの歴史と今を一気に塗り替え今後も続くものであると見た場合、CUDAを利用してアプリケーションをうまく作る方法を研究すること意外のことは意味が薄れるだろう。

現実的には、CPUとかけ離れたアーキテクチャなので、適したアプリケーションを探すことや、既存のプログラムをうまく適用するための手法が重要になる。
ぶっちゃけるとCELLと同じだなこれは。

次に考えるのは、AMD(ATI)という対抗馬の存在。
Close To the MetalとかいうHPC向けの言語?環境?を発表しているんだが、これもCUDAみたいにアーキテクチャと強く依存したモノになるんじゃないだろうか。恐らく、CUDA同様にC/C++言語の拡張として出してくるんじゃないかと勝手に予想。

さて。
こういう話になると出てくるのが、所謂「いいとこどり」の発想。
……と言いたいのだが、どうなんだろうなぁ……。
方法はいくつか考えられる。

1:Cで書かれたプログラムを自動並列化的にGPUで処理しやすいようにコード変換するという考え。問題は、アーキテクチャの特性を引き出せる変換機構がないと性能が出ないこと。

2:CUDAとCTMの仕様から似通った部分を抜き出し、機械的に処理してどちらでも動くようにするという考え。問題は、CUDAとCTMに大きな差があるとどうしようもないこと。

3:グラフィックスAPIを利用しつつ、ある程度容易にプログラムが組めるようにサポートすること。問題は、グラフィックスAPIの構造とは根本的に異なるアーキテクチャへの対応が難しいことおよびシェーダの記述を隠蔽するのが難しそうなこと。

とりあえず3点挙げてみたが、どれも一長一短だと思う。ハードウェア側の進化の方向がわからないのも問題の一端だろうなぁ。


ちなみに今のところ、ひとまずは3のアプローチで色々やってみようと思っている。というかCPU+GPUの並列処理を自動並列化的になんとかできる気がしていないのも事実。


とりあえず寝よう。
朝から実験しよう。
成果報告書が進まないというか、実験データとかどのくらい載せれば良いんだろうね?