« SPU をベンチマーク | メイン | SPU をベンチマーク(その3) »

SPU をベンチマーク(その2)

 x86 や PowerPC で動く俺ベンチは元々マルチコアに対応していて、スレッドを複数立ち上げ各スレッドから処理関数を呼び、終わるまで待っている。
 そして SPU で動くようにした時に使っているのは libspe2 なので、spe_context_run で処理している。つまりブロッキング関数。

 あ、マルチ SPU に対応する必要ねーじゃん。

 ということで、かくして起動時の引数だけで使用コア数を変更出来てしまった。

  1. CELL 特有の処理を極力行わず、float 型を使い、最適化はコンパイラオプションに任せる。
  2. いまここ→マルチコアに拡張する。
  3. メモリフローを改善する。
  4. SIMD 化する。
  5. 大きくアンロールする。
  6. アセンブラでガリガリ。
SPU 2 個:

  SPU_1x1_C.elf      5528692000 clk,  5.15 clk/FP // 1727.72 ms
  SPU_4x4_C.elf      1550003840 clk,  1.44 clk/FP // 484.38 ms
SPU 3 個:

  SPU_1x1_C.elf      4217805920 clk,  3.93 clk/FP // 1318.06 ms
  SPU_4x4_C.elf      1383961840 clk,  1.29 clk/FP // 432.49 ms
SPU 4 個:

  SPU_1x1_C.elf      3469493880 clk,  3.23 clk/FP // 1084.22 ms
  SPU_4x4_C.elf       958748360 clk,  0.89 clk/FP // 299.61 ms
SPU 5 個:

  SPU_1x1_C.elf      3121461600 clk,  2.91 clk/FP // 975.46 ms
  SPU_4x4_C.elf      1222128320 clk,  1.14 clk/FP // 381.92 ms
SPU 6 個:

  SPU_1x1_C.elf      3045823880 clk,  2.84 clk/FP // 951.82 ms
  SPU_4x4_C.elf       982901160 clk,  0.92 clk/FP // 307.16 ms

 4 個までは速くなってるものの微々たるもので、数に比例して速くなっていない。理由はメモリ帯域の限界だと思う。
 メモリ帯域を最適化すると 1 割改善すると予想したが、当初の予定よりも MFC の処理を端折っているので次の行程でもっと良くなるはず。

トラックバック

このエントリーのトラックバックURL:
http://yoffy.dyndns.org/cgi-bin/mt/mt-tb.cgi/539

コメントを投稿

About

2006年12月21日 09:25に投稿されたエントリーのページです。

ひとつ前の投稿は「SPU をベンチマーク」です。

次の投稿は「SPU をベンチマーク(その3)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.37