相关疑难解决方法(0)

如何使用g ++对我的循环进行矢量化?

我在搜索时找到的介绍性链接:

  1. 6.59.14循环特定的Pragma
  2. 2.100 Pragma Loop_Optimize
  3. 如何给出关于循环计数的gcc的提示
  4. 告诉gcc专门展开一个循环
  5. 如何在C++中强制进行矢量化

正如你所看到的,大多数是C语言,但我认为它们也适用于C++.这是我的代码:

template<typename T>
//__attribute__((optimize("unroll-loops")))
//__attribute__ ((pure))
void foo(std::vector<T> &p1, size_t start,
            size_t end, const std::vector<T> &p2) {
  typename std::vector<T>::const_iterator it2 = p2.begin();
  //#pragma simd
  //#pragma omp parallel for
  //#pragma GCC ivdep Unroll Vector
  for (size_t i = start; i < end; ++i, ++it2) {
    p1[i] = p1[i] - *it2;
    p1[i] += 1;
  }
}

int main()
{
    size_t n;
    double x,y;
    n = 12800000;
    vector<double> v,u;
    for(size_t i=0; i<n; ++i) {
        x …
Run Code Online (Sandbox Code Playgroud)

c++ optimization g++ vectorization loop-unrolling

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

g++ ×1

loop-unrolling ×1

optimization ×1

vectorization ×1