0
有一个周期:模运算矢量
long a* = new long[32];
long b* = new long[32];
double c* = new double[32];
double d = 3.14159268;
//set a, b and c arrays
//.....
for(int i = 0; i < 32; i ++){
d+= (a[i] % b[i])/c[i];
}
怎么可以实现使用英特尔C++ vectoriation能力(例如SIMD的#pragma或sse-指令)这个周期?
如果我写:
#pragma simd reduction(+:c)
for(int i = 0; i < 32; i ++){
d+= (a[i] % b[i])/c[i];
}
然后速度不增加:(
你为什么要将结果转换为“double”? – us2012
该代码不会编译。也许你的意思是'(双)(a [i]%b [i])'? – interjay
@ us2012:这个结果必须是双倍的。示例更正了示例。 –