gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:15:10 30 4
gpt4 key购买 nike

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

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 的英特尔 i7-4578U 上,前者运行时间为 1.507 毫秒,而后者运行时间为 1.513 毫秒,运行次数为 10000。

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

最佳答案

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

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

关于c++ - 出于某种原因,串行代码比 SIMD 代码运行得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30789325/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com