SSE2 速いね

先日、Aspire Revo に触れましたが、このGW前からお友達にお願いして、いまやってる検索エンジンのコア部分のCUDA実装評価を進めてもらっている。最近調達しておいた、ML115 G5 + GForce 9600 GT Green Editionで評価中。
で、比較対象でCPUでの演算や、SSE2を使った演算も書いてもらったところ、今の所はSSE2はえーし、SSE2でいいかもなーという感じです。

久しぶりに論理演算をやってると、頭が戻ってきたのか、さらなる論理最適化が可能という事もわかって、演算量が25%程削減できそうだ。インデックスをNOTにすると、さらに25%程削減できると、約半分程度になりそう。今のエンジンにも適応できるし。

CUDAは、各スレッドは同じ演算処理しかできず、別々の演算をする事ができないとか、微妙にメモリ周りが見えない。最適化というかパフォーマンスを出すには、たくさんのスレッドならべろって感じで、256スレッド以上とか並べて同一処理を並列で走らせたりとか、大量データを同一演算させる場合に効果がでるようだ。プロセッサ毎に別々の演算をさせるって事はできないみたいなので、残念。
うちの検索エンジンの場合は、もっと大量のデータが必要になる場合でないと、CUDAの効果が出ないのではないかというのが、現時点の所感です。

あと、CUDAって科学演算向きなのか、マルチスレッドできないみたいで、その辺りもSSE2使った方が、書きやすいしメンテしやすい感じがする。ほんとに速さを追求するなら、CUDAがいいけど、数倍程度しか早くならんのなら運用メンテナンスコスト考えるとSSE2でいいかなと。