« gcc で混合出力(その2) | メイン | SPU をベンチマーク(その5) »

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

 メモリの使い方を大幅に変えてみた。

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

  SPU_4x4_C3.elf     2231895520 clk,  2.08 clk/FP // 697.47 ms
SPU 4 個:

  SPU_4x4_C3.elf      586392800 clk,  0.55 clk/FP // 183.25 ms
SPU 5 個:

  SPU_4x4_C3.elf      477887000 clk,  0.45 clk/FP // 149.34 ms
SPU 6 個:

  SPU_4x4_C3.elf      442559320 clk,  0.41 clk/FP // 138.30 ms

 見ての通り、6 個で 6 倍速とまではいかないものの、5 倍速くなり、SPU の個数に応じてスケールするようになった。
 この後で更に『SPU をベンチマーク(その3)』の時のような MFC を非同期に行う方法を試してみたが、変化無し。演算ネックなのかもしれない。

 入力データのうちの半分は全 SPU 共通なので、本来はメモリ転送を行わずとも SPU 間通信で賄えるが、プログラムが複雑になるのとメモリの非同期アクセスで改善しなかった事からメモリネックでは無いとして保留にし、次に進む事にする。

トラックバック

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

コメントを投稿

About

2006年12月31日 02:19に投稿されたエントリーのページです。

ひとつ前の投稿は「gcc で混合出力(その2)」です。

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

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

Powered by
Movable Type 3.37