SSE化したら遅くなった…orz

当初はCUDAで遊ぶつもりだったのだが,
→途中で気が変わって,まずはSSE化しようという気になった
→SSE依存なコードを入れる前に,根本的に手抜きしていたところを真面目に再実装したらけっこう早くなった(あくまでも当社比.絶対値ではまだ全然遅い)

という経緯を経て,先週の後半あたりからとりあえずボトルネックになっている部分をSSE化していたのだが…なぜか劇的に遅くなってしまった.orz

単純なテストコードで調べたところ,コンパイラの最適化を完全に外した状態だとSSE未使用の方が圧倒的に遅いのだが,最適化によってSSE未使用コードでもかなり近い速度になる模様.うーむ.こうなると,わざわざ精度をfloatに落としてまで使う必要は無さそうな…

追記:なんとなくコツがわかってきたような気がする.どうも,SSEはオレの想像以上に限定的な状況でしか有効性を発揮しないようだ.(「普通のCPUの演算が速い」というべきかもしれないが.)とりあえず,ちょっとは速くなったが,労力には見合わないような…ま,こんなもんか.この原状の処理のまま無理矢理CUDAに持っていっても早くなるとも思えないなぁ.