2ch ゲハ版ネタ
Cell 80 は、結構、面白かったのだが、途中から、ソニーの45n投資の縮小の話に占領されてしまったみたい。その最後のあたりに出ていた話が割と面白かったのに、途中で終ってしまってます。
http://
が挙げられていて、少し前のデータだけど、
3.2GHz Cell (8 SPEs)* 8.69 GFlops/s
2.2GHz Opteron 0.60 GFlops/s
1.4GHz Itanium2 0.32 GFlops/s
とか言う話。(Double precision) で、アンチがかみついているのが、
「キャッシュの先読みすれば、(8 coreでも)同じぐらいの性能が出る」
という論法だった。これって、少し前(と言っても10年前だと思う...)に流行った研究なんだよな。単純に、
for(i=0;i<10000;i++) { int dummy = a[i+10000]; ..... }
みたいに、ちょっと先に触るような方法だとコンパイラに蹴られちゃうし、コンパイラに作り込にしても、キャッシュのサイズ依存になるので、具合が悪い。なので「キャッシュ先読み命令」を用意しよう。ってな話。SSE3ではPREFETCHn とかいうのがあり、Intel のcompiler や gcc は、このプリフェッチ命令を吐きます。えらい。(このスライドだと、それを使っているかどうかはわからないんだけど Opeteron なのが微妙...)
でも、前のスライドを見るとわかるんだけど、Cell の実装は、
通信と計算をoverlapさせて行う
所に意味がある。これは、いわゆる、ソフトウェア・パイプラン的な実装なんだけど、Cell は全体的にDeteministic に動くので、予測ができるんだが、PREFETCH だと、そうはいかない。まして、マルチコアでキャッシュが干渉するような状況ではね...
そのあたりをどう言い訳するのかは面白そうだったんだが...
No comments:
Post a Comment