2008年12月17日水曜日

LarrabeeとCell

http://pc.watch.impress.co.jp/docs/2008/1217/kaigai481.htm
抜粋
仮想マシンを走らせるCPUコア間では、キャッシュの間でコヒーレンシを保つ必要がない

なるほど、そりゃそうだ。そういう発想はなかったわ~(おれ、あほ?)。
コヒーレンシを限定的にするという方向が、究極までいくとLSになるわけか。これはいいかもしれない。でも、それって実装はそんなに簡単にできるもんなんだろうか…?

まあ、それは置いとくとして、思ったのはLarrabeeはCPUとCellの間なんだなってことだ。

CPU -Larrabee -Cell- GPU

でも、CellはCPUで、LarrabeeはGPUと。

Cell2はGPUとCPUのどっちの方向にむかうだろう。PPE強化という点では、CPU的な性能が強化される。SPEの数が増えるので、GPU的になるといえばなるが本質じゃない?はて。

LSが増えたら、どっちだろう?どんなインパクトを持つだろう?1MのLSを持つSPEって意味あるだろうか?うーん、本質的ではないような気もするが。まあ、どうせ無理かな。よくて倍増だろう。いやそれもないな。

それにしても、ここまで似てるなら、OpenCLでCellとLarrabee用で同じ最適化オプションとかできそう。どうなることやら。

2008年12月16日火曜日

40年前の夢

Cnetでマウス生誕40周年についての話が出ていた。

http://japan.cnet.com/news/biz/story/0,2000056020,20385224,00.htm

40年前では夢のような世界に、今我々はまさにいるんのだ。すごいこった。

次の40年でいったい何がかなうかな。

2008年12月7日日曜日

ぼーっとしていると今年も終わり

最近、いろんな忙しさが少しおさまり、燃え尽きちまったぜな感じ。でも本当はぼーっとばかりもしていられないんだけどなあ。もう疲れた。

そんなときは、何も考えずに、OSでもインストールすりゃいいんですと、PS3×6台にLinuxインストール。いまだにFedora core 6とSDK2.1を使っている私。

そんで、久し振りOpenCV on the Cellもインストール。やり方を忘れてたが、まあすんなりできた。よかった、よかった。このまえ、質問してきた人はうまくできたんだろうか?すこし気になるが、返事がないからできたんだろう。

今年はずいぶんPS3にLinuxをインストールしたな。20台近くしているな。なんも偉くもないけど、えらい気がするよ。少し空しいけど。

あと、CUDAもずいぶんインストールしたな。今、GT200がまわりに10枚以上はあるので、10TFLOPSですね。自慢。俺のじゃないけど。CUDAはインストール簡単だから別にそんなに苦労してない。

Cell×15=3TFLOPSとあわせて13TFLOPSくらい。すげー。

しっかし、GPUの進化は本当に早い。去年の今頃初めて、いつのまにかCUDAのバージョンも2.0になっちゃって、環境も知らないうちにいろいろ進化している。Global memoryのCoalesceさせる条件とか変わってて、知らずに最適化するところだった。わりと条件がゆるくなってよいな。Bank Conflictの条件も変わった?もともとあんまりそこら辺を把握してなかった可能性もある。もう一回くらい、プログラミングテキスト読んだほうがいいな。

GT200って、やれることは、G80世代から大きくは進化しているように見えない。見えない部分で根本的に変えているところとかあるんだろうけど、つかってる側からしたら、規模が倍に増えただけにしか感じない。もちろん倍精度ができるようになったとかあるけど。

今度はどうなるかなっていうのが、やっぱり気になってくる。個人的には、Shared Memoryが増えてくれないかなといっつも思う。CellでもLS増えないかなともいっつも思うように。これは、みーんな思っていることだけど、なかなかかなわない。互換性の問題?十分だという判断?うーむ。

あと、SM間の直の通信とか、SMの独立性をあげるとか、より汎用的なマルチコアみたいになる可能性ってあるんだろうか?これに舵を切ったら、完全にCellみたいになってしまうので、意味があるのかわからないけど、どうなんだろう。でも、そんな能力はGPUでは無意味だろうか?

やっぱり、GPUである以上、そのメインの使い方がどうなるかっていうのが、まずありきで、そこから汎用的な使用にすり合わせられるわけだから、そこがどうなるかという、市場の要請みたいなのを一番に考えて予測するべきだろうか。だとすれば、unreal engineの人の講演の話ででている、より柔軟なGPUの道がこれからのメインストリートだろう。だとすれば、やっぱりCell的にならざるを得ない。

そうすると、やっぱりCPUとGPUとの汎用性の差というのの境界がどんどん近付いてきて、GPUが消滅するっていう話になったりするが、そうなんだろうか?そしてCPUとGPU混合というストーリー。

でも、GPUとCPUの割合が、固定っていうのがうまくいくのだろうかと、いつも思う。それは、人やアプリケーションによって全然変わってくるから、難しい。

だから、FPGAみたいに一部のロジックを可変にして、ある時はCPU、ある時はGPUみたいなのを動的に変えられないだろうか。CPUの有利な処理のときは、大きなCPUを10個。GPUの有利な処理のときはCPU2個、GPU1000個とか。

そしたら、結局、全部FPGAでやれってことになるんだろうか。っていうか、そんな動的なシステムできるわけないか。

いや、そもそも、CPUとGPUの違いって言ったら、逐次か並列化ってのが大きな違いで、CPUは多くても数個で事足りる?どんどんわけがわからなくなってきた。