パスワードを忘れた? アカウント作成
455042 journal

Qsの日記: ちょっとでもいいから触れてみよう 2

日記 by Qs
オモテにコメントとして書くべき内容かもしれんがNEETなので。

CUDAがSPEよりプログラミングしやすいかっていったらそれは無い気がする。どっちも短所が痛すぎる。その短所とはメモリ関係とプログラミングモデル。

SPEは256kBしかないからダメ、とか言われるけど、CUDAだって本当に高速にアクセスできるメモリなんて高々16kB。これを8つのプロセッサで共有するからプロセッサあたり2kB。そしてメモリの入れ替えもプロセッサがやらないといけない。CUDAではプログラマブルキャッシュなんて呼んでいた気がするけど、ただのスクラッチメモリ。ただ、プロセッサが512MBとかある外部メモリにアクセスできるのがCellよりマシなところ。もちろんレイテンシは数百クロック程度。

また、いまのところCUDAでは同時に1種類のプログラムしか動作しない。だから、Cellで言えば、あるSPEは音処理、別のSPEは画像処理、またまた別のSPEは違う処理といったことができない。

CUDAのプログラミングモデルは汎用プロセッサのそれとは大きく異なる。1つのデータセットを100個以上のプロセッサがよってたかって処理するわけだが、全部のプロセッサは同じプログラムである。言い換えれば、1つのソースコードで100個以上のプロセッサを操り、1つの目的の処理を達成するのである。んで、高速なメモリはプロセッサあたり2kB。

プログラムを考えるときの頭は、どちらかといえばRTLを作っている感じだった気がする。ソフトウェアしかできないスタッフに丸投げしたら、CUDAの特徴を活かしていないプログラムしか書けなかった。CellはSIMDなので一応ソフトウェアな頭でかける。

CUDAの例題として、簡単なデジタル信号処理をさせたがあまり速度がでなかった。ある意味当然な結果だったかもしれないけど、処理の並列性が少なかったのである(せいぜい数十個)。そして同じ処理をCPUのSIMDでプログラミングしたら、それ以上の速度が出た。SPEも試してみたいので、leadtekの例の奴を入手したらやってみるつもり。

てなわけで、CUDA(というかGPU)が常に良いアドバンテージを持っているわけではなく、逆にツボる場所はCell以上に狭いのではないかと思う今日この頃。

たぶん、汎用CPUは演算速度は無いけど大きな自由度があり、GPUは演算速度は高いが自由度が低く、Cellはその中間(ど真ん中じゃないけど)に位置するんだろうなと。

んー、なんか前にも似たようなことを書いた気がする。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • > どっちも短所が痛すぎる。

    GPUのほうはいじったことないですが、どっちもたぶんプログラミングと
    最適化がオオゴトでプログラマには苦痛(変態プログラマには快感)なの
    だと思います。コードが読みにくくなるし。

    ライブラリが充実する頃にはシステムが陳腐化してそうだし。
    --
    love && peace && free_software
    t-nissie
    • openCLがどう関わっていくかに興味がありますね。

      仕様書読んだところ、GPU側のメモリ管理や実行などを
      コントロールする感じで、CUDAと似たようなフレームワークに
      なっている感じです。

      PC側のソースコードはGPUの種類に関わらず使い回しができる
      ように見えますが、GPU側のコードはGPUの種類に応じた最適化が
      必要そう。

      openCLの仕様書をきっちり読んでいないんで、すげー適当な
      ことかいてるかもしれません。
      親コメント
typodupeerror

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

読み込み中...