PS3を使って3次元の流体計算のコードを書くのがほぼ無理っぽい件について

んと、PS3に乗ってるCellっていう石はPPEという親分のコアが、子分のSPEというコアに命令を送って、全部で7つだか8つだかあるSPEが束になって計算するから速いんだよという、ヘテロジニアスな構成になってるからどうのとかいうことで、それはそれで崇高な設計思想に基づいていて、確かにわかりやすいし、速そう。でも、駄菓子菓子、SPEが直接アクセスできるメモリ領域っていうのがLSというのなんだけど、これが糞やったら容量が地位さくて手に負えん。しかも、メインメモリへのアクセスがSPEからは直接はできないって、それどう考えても遅いですみたいな感じなんですが、どうしてSONYさんとかはこういう仕様にしたんでしょう。
そもそもメインメモリがPS3では256MBしかなくて、それって竹槍で戦闘機を叩き落とせってことかよとおもうことしきりなんですが、それは東芝のQUOSMIOなり買えば解消できるんですが、しかし、そうしたところでメインメモリが増えても結局、メインメモリからSPEまでの通信をしないといけないからあれなんじゃないかなーと思ってみたり。
しかしLSってなんなんですかね、キャッシュみたいなもんなんだろうけど、どうしたもんか。

>LS容量とはSPEそれぞれについてるメモリみたいなやつですか?


そうです。あれはSPEにとって直接アクセスできる唯一のメモリです。
1個あたり256KBしかないので、cellでの開発の苦労の源ですが、キャッシュミスというものが存在しないので、3.2GHzの全速が出せます。
最近のCPUって意外とキャッシュミスでの性能ロスが大きいんですよ。
2009/06/02(Tue) 00:00 | URL | tanuki | 【編集】
http://warhawker.blog56.fc2.com/blog-entry-295.html

とか、

だがその場合、SPEプログラムのデータとバイナリをあわせた容量が少なくとも256KB以下にならなければいけないが、そうするとデータをメインメモリに取りにいく事が多くなりパフォーマンスが落ちる。これはそもそものCellの思想に反するものであり、メモリ管理機能はおそらくプログラミング様式を柔軟にするために用意されたのであろうと WESAYSOは推測する。なぜならメモリ管理機能があるならSPEプログラムは256KBを意識することなくメインメモリの仕様容量分(搭載物理メモリ容量ではない)を使えるからである。その場合適宜、SPEのカーネルがメインメモリからデータをLSに取り出しそこをあらたにSPEがアクセスする違うメモリ領域にマッピングすることで、SPEプログラムはあたかもLSが仕様容量分(搭載物理メモリ容量ではない)になったかのように振舞える。だがこの場合 LSはキャッシュとなる。
http://blogs.yahoo.co.jp/wesaysocompany/478280.html

の記述をみるとそうだよなあ。


まあね、2次元とかだったらね、まだそこそこがんばれると思うんだ。
でもこれを3次元にすると、2次元のときの1.5乗のメモリが必要になるわけで、2次元のときに104の領域をとっていたのを106の領域が必要になるわけで、そりゃ無理だろとなるわけですよ。
むう。どうにかならんかな。っつーかメインメモリ256MBだって、Intelのそこそこ速い石のキャッシュ程度じゃんって思うんだけど、どんだけけち臭いんだろうと思った次第。東芝はQuosmioに入れるとかいって、そこそこCellを使おうとしているけれど、SONYとか、IBMはその辺どうお考えなんだろうか。まだ開発は継続させるのかなあ。もともとのモチベーションがPS3に載せる石とかだったらまだ今のままでいいんだろうけど、科学技術計算に使うにはとってもしんどい。