Cellプロセッサ

 9時に帰宅して15時まで寝とった。フラフラだ……
 ハマスタに行ければと思っとったが、明日も出社じゃし、さすがに体調キープを優先することにした。そんでちょっと GPU 弄って遊んどったんじゃけど、自宅マシンだと CUDA が動かんのがちと不満。

 ただ、やっぱ改めて思ったけど、 CPU-GPU という2つのプロセッサのヘテロジニアスなプログラムより、PPU-SPUという2つの異なるユニットを搭載した1つのプロセッサのヘテロジニアスなプログラムのほうが扱いやすい。

 CPU のターンでやりたい計算を GPU にオフロードしても、結果を取得するには GPU の動作の経過を待たにゃいけんわけで、その感覚が PPU-SPU とだいぶ違う。リアルタイムアプリでは別々に動いとる2つのプロセッサの間でオフロードできる計算には種類的な限界があると思う。たとえば Collision Detection を GPU でやるコードなんかよく見かけるけど、これを60フレームで動作する超高速カーレースゲームでライバルカーとの車体のこすり合いに使えるんですか?という。そのへんの、どこになにを使うかのマネジメントというか、設計は、 Cell より難しかろうなぁ……

 しかもこの2つの異なるプロセッサの関係は、通常メインスレッドから別スレッドを経て、それすらも描画コマンドを投げるだけ。やっぱタイミングの取り方が"がっちりとした制御"の外にならざるを得ん気がする。ひょっとしたらこのあり方がもはや古いんかもしれんけど。PPU-SPUはなんだかんだで同一プロセッサじゃけんね。その Tick で結果を取得するかどうかはともかくとして、メインから直感的にタスクをオフロードしやすいと言えると思う。

 ヘテロジニアスの旗手になった Cell プロセッサが出た頃は同一プロセッサ上の非対称なユニットの同期でさえ議論の対象になったのに、 CPU-GPU に関しては Cell より遥かにそのへんの具合が悪いにも関わらず、議論はほとんど見られない。そのへんが気になる人も多いと思うんじゃけど、用途が違うということなんじゃろうか? 

 まぁでも専用機で専用アプリ動かすんだったら CPU-GPU でも結局やりようなんかいくらでもあるわなぁ。 Xbox 360 は今そのへんが一番アツいんかもしれん。(で、世間の情報としては来年くらいに出る、と……)