c++ - 由于某种原因,串行代码比SIMD代码运行得更快

c++ - 由于某种原因,串行代码比SIMD代码运行得更快,第1张

出于某种原因运行简单的串行代码

for(i=0;i<1152*1152;i  ){
    MatrixA3[i] = MatrixA1[i]   z*MatrixA2[i];}

与矢量化等效物的运行速度或速度相同;

for (int i = 0; i < 1152*1152; i =4){
    load_data1 = _mm256_load_pd(MatrixA1   i);
    load_data2 = _mm256_load_pd(MatrixA2   i);
    _mm256_store_pd(MatrixA3   i, _mm256_fmadd_pd(load_z,
    load_data2,load_data1_dp));
    }

在我使用英特尔编译器XE 15.0的intel i7-4578U上,前者以1.507millesecs运行,而后者以1.513毫秒运行10000rns。

我的经验是avx2内在函数的显着加速,但由于某种原因,这条线决定让我失望。 我做错了什么?

最佳答案:

1 个答案:

答案 0 :(得分:3)

你做错了什么?不相信你的编译器。

这不是手动优化的情况,任何可敬的编译器都可以对其进行矢量化。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
U19学习网站 » c&#43;&#43; - 由于某种原因,串行代码比SIMD代码运行得更快