軽く SIMD 化してみた。
- CELL 特有の処理を極力行わず、float 型を使い、最適化はコンパイラオプションに任せる。(870.21 ms)
- マルチコアに拡張する。(299.61 ms, 2.9 倍速くなった)
- メモリフローを改善する。(138.30 ms, 2.2 倍速くなった)
- いまここ→SIMD 化する。
- 大きくアンロールする。
- アセンブラでガリガリ。
SPU_4x4_C3.elf 1232127760 clk, 1.15 clk/FP // 385.04 ms
SPU_4x4_C3.elf 277192320 clk, 0.26 clk/FP // 86.62 ms
元々 -ftree-vectorize が効いているので著しい向上は無いが、それでも自動ベクトル化に任せるより自力で SIMD プログラミングした方が速いという結果になった。