小编rep*_*lia的帖子

C++优化矢量化嵌套循环

我有一个程序处理多个嵌套循环,在3D域上运行:

unsigned int sX(m_sizeZ*m_sizeY);
unsigned int b(sX+m_sizeZ);
for(unsigned int i(1);i<m_sizeX-1;i++){
    for(unsigned int j(1);j<m_sizeY-1;j++){     
        for(unsigned int k(1);k<m_sizeZ-1;k++){
            m_r[b+k]=m_func[b+k]-m_cX*(m_data[b+k-sX]+m_data[b+k+sX]-2.0*m_data[b+k])
                        -m_cY*(m_data[b+k-m_sizeZ]+m_data[b+k+m_sizeZ]-2.0*m_data[b+k])
                        -m_cZ*(m_data[b+k-1]+m_data[b+k+1]-2.0*m_data[b+k]);
        }
        b+=m_sizeZ;
    }
    b+=2*m_sizeZ;
}
Run Code Online (Sandbox Code Playgroud)

我的数组大小是m_sizeX*m_sizeY*m_sizeZ的两倍.

我以这种方式迭代,因为我不想触及域的边界.

当用(g ++)-msse2 -ftree-vectorizer-verbose = 2编译时,我当然得到多个嵌套循环注释.

有没有办法在没有(或多或少)复杂的检查操作的情况下使用单个循环?

谢谢!

c++ vectorization nested-loops

5
推荐指数
1
解决办法
1413
查看次数

为什么矢量化失败?

我想使用优化我的代码进行矢量化

-msse2 -ftree-vectorizer-verbose=2.
Run Code Online (Sandbox Code Playgroud)

我有以下简单的代码:

int main(){
  int a[2048], b[2048], c[2048];
  int i;

  for (i=0; i<2048; i++){
      b[i]=0;
      c[i]=0;
  }

  for (i=0; i<2048; i++){
    a[i] = b[i] + c[i];
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到这个说明

 test.cpp:10: note: not vectorized: not enough data-refs in basic block.
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ vectorization

5
推荐指数
1
解决办法
3491
查看次数

Laravel 5 - 漂亮的分页师

因此,我试图在Laravel 5中获得分页,localhost/ads/1其中包括1代表页面的漂亮网址.

根据我的理解,这样的操作将需要超载AbstractPaginator,或者LengthAwarePaginator,旨在修改Database\Query\Builder.

我是否遗漏了某些内容,绑定或依赖注入,或者是否有可能更改我们想要使用的分页器?

php pagination laravel laravel-5

5
推荐指数
1
解决办法
2570
查看次数

标签 统计

c++ ×2

vectorization ×2

laravel ×1

laravel-5 ×1

nested-loops ×1

pagination ×1

php ×1