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:這個結果必須是雙倍的。示例更正了示例。 –