« bsc.es の libspe2 を使ってはいけない | メイン | SPU をベンチマーク(その2) »

SPU をベンチマーク

 SPU で動くようにしてみた。

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

  simple            26660013720 clk, 24.83 clk/FP,  8220.00 ms
  FPU_1x1_C          7503533880 clk,  6.99 clk/FP,  2308.00 ms
  FPU_2x2_C          9337129560 clk,  8.70 clk/FP,  2888.00 ms
  FPU_4x4_C          6507395720 clk,  6.06 clk/FP,  2012.00 ms
  VEC_1x1_C          7086177200 clk,  6.60 clk/FP,  2188.00 ms
  VEC_1x1_C2         4503501400 clk,  4.19 clk/FP,  1384.00 ms
  VEC_4x4_C          1988643400 clk,  1.85 clk/FP,   616.00 ms
  SPU_1x1_C.elf      9893432560 clk,  9.21 clk/FP,     0.00 ms
  SPU_4x4_C.elf      2784683680 clk,  2.59 clk/FP,     0.00 ms

 アライメントの処理を端折ってるのと転送 16 KB の制限も無視している関係上サイズが 4 の倍数かつ 1024 以下でないと動かない手抜き設計。
 SPU で処理した時間が何故か測れていないけど、クロック数は正しいので実際には SPU_1x1_C が 3091.69 ms で SPU_4x4_C が 870.21 ms。
 やべー。意外に速いんじゃね!? やっぱレジスタが多いのと、後は gcc の -ftree-vectorize がうまく動いているのかもしれない。

トラックバック

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

コメントを投稿

About

2006年12月20日 23:05に投稿されたエントリーのページです。

ひとつ前の投稿は「bsc.es の libspe2 を使ってはいけない」です。

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

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

Powered by
Movable Type 3.37