スキップしてメイン コンテンツに移動

投稿

ラベル(SSE)が付いた投稿を表示しています

SSE2を使ってdouble型配列の要素の値の合計を求める関数

SSEに興味があり、ためしに配列の値の合計を求めるプログラムを書いてみました。 まだまだ勉強中なので、プロの方から見たら駄目駄目かもしれません。こんなコードでもIntelのCPUでは、SSEなしで書いたプログラムより単純に2倍ぐらい高速になるので面白いです :) #include <emmintrin.h> double sum(double *src, int len){ int o = len%2; double a[2] = {0,0}; __m128d xsum = _mm_loadu_pd(a); for(int i = 0, loopNum = len - o; i < loopNum; i+=2 ) { xsum = _mm_add_pd(xsum, _mm_loadu_pd(src + i)); } _mm_storeu_pd(a, xsum); if(o) { return a[0]+a[1]+src[len-1]; } else{ return a[0]+a[1]; } }