我刚刚通读了MSDN 上的自动矢量化页面,但仍然不能真正了解哪些循环将被矢量化。
在MSDN 博客上,我们得到了这个可以自动矢量化的循环示例:
const int N = 1000;
float a[N], b[N];
// Initialize a[i] = i; b[i] = 100 + i
int main()
{
for (int n = 0; n < N; ++n) a[n] += b[n];
}
我通常使用n != N
成语而不是n < N
; 这和在 OpenMP 中一样重要吗?或者自动矢量化不管用吗?