c++ - 我是否需要在我的 for 循环中使用小于 (<) 运算符来进行自动矢量化?

标签 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 中一样重要吗?还是无论如何自动矢量化都有效?

最佳答案

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

关于c++ - 我是否需要在我的 for 循环中使用小于 (<) 运算符来进行自动矢量化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800913/

相关文章:

c++ - 声明带有和不带有 'typedef' 的枚举有什么区别?

c++ - 编译简单的C++应用程序时出错

azure - 使用 Visual Studio Online 进行发布管理

jquery - Twitter Bootstrap 包含问题

c++ - 类和成员函数模板特化出错

c++ - 如何绑定(bind)模板函数

c++ - 从 1 个 cpp 文件引用到另一个 C++

c++ - 使用迭代器的 std::vector 模板构造函数是否允许转换?

visual-studio - 在 Visual Studio 2013 中获取括号外

visual-studio-2013 - VS 2013 看不到我的自定义 checkin 策略