私は一連の操作をループで実行しています。OpenCLでベクターを累積する方法は?
for(int i = 0; i < row; i++)
{
sum += arr1[0] - arr2[0]
sum += arr1[0] - arr2[0]
sum += arr1[0] - arr2[0]
sum += arr1[0] - arr2[0]
arr1 += offset1;
arr2 += offset2;
}
今、私はこの
for(int i = 0; i < row; i++)
{
convert_int4(vload4(0, arr1) - vload4(0, arr2));
arr1 += offset1;
arr2 += offset2;
}
のような操作をベクトル化しようとしている。しかし、どのように私は、ループを使用せずに、スカラsum
で得られたベクターを蓄積していますか?
私はOpenCL 2.0を使用しています。
次にcpuはこれと高速でなければならず、ドットプロダクトと同様に余分な乗算がないためです。 –