gpt4 book ai didi

c++ - 是否有机会使用 SIMD 加速循环代码?

转载 作者:太空狗 更新时间:2023-10-29 23:48:43 27 4
gpt4 key购买 nike

考虑以下代码,其中afloat 的参数数组,sfloat< 的初始未初始化结果数组:

s[n - 1] = mu * a[n - 1];
for (int j = n - 2; j >= 0; j--)
s[j] = mu * (a[j] + s[j + 1]);
return s;

是否有机会使用 SIMD (AVX2) 提高此类循环代码的性能?

编辑:后来我发现这个公式/算法被称为“折扣和”,但在互联网上找不到它的平行版本。

最佳答案

相关:Is it possible to use SIMD on a serial dependency in a calculation, like an exponential moving average filter? - 如果前面有 n 步的封闭形式公式,您可以使用它来回避串行依赖性。但我不认为这里是这种情况。

这看起来像一个前缀和类型的串行依赖,在垂直添加之上,带有 a[j]。有一些方法可以加速,比如
O( SIMD_width/log(SIMD_width) )

关于c++ - 是否有机会使用 SIMD 加速循环代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664368/

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