我是否需要在for循环中使用less than(<)运算符进行自动向量化?

时间:2013-11-05 23:09:03

标签: c++ visual-studio-2013

我刚读完auto-vectorization page on MSDN但仍然不能确切地理解哪些循环会被矢量化。

the MSDN blogs上,我们得到一个可以自动矢量化的循环示例:

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中的问题有关吗?或者自动矢量化无论如何都可以工作?

1 个答案:

答案 0 :(得分:3)

除非你了解所有自动化工作的内容,否则你将很难预测每个循环将要做什么。如果这对你很重要,那么我觉得更好的方法是使用/Qvec-report:2作为定义的here,它应该告诉你一个给定的循环是否是自动矢量化的以及为什么。