3

我刚刚通读了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 中一样重要吗?或者自动矢量化不管用吗?

4

1 回答 1

3

除非您完全了解所有自动矢量化的工作原理,否则您将很难预测每个循环将要做什么。如果这对您很重要,我认为这是一种更好的方法,将按照此处/Qvec-report:2定义的方式使用它应该告诉您给定循环是否是自动矢量化的以及为什么。

于 2013-11-05T23:27:22.670 回答