gpt4 book ai didi

c - 上海证券交易所 (SIMD) : multiply vector by scalar

转载 作者:太空狗 更新时间:2023-10-29 16:28:47 25 4
gpt4 key购买 nike

我在程序中执行的一个常见操作是按标量缩放 vector (V*s,例如 [1,2,3,4]*2 == [2,4,6,8])。除了首先在 vector 中的每个位置加载标量(例如 _mm_set_ps(2,2,2,2))然后相乘之外,是否有 SSE(或 AVX)指令来执行此操作?

这就是我现在做的:

__m128 _scalar = _mm_set_ps(s,s,s,s);
__m128 _result = _mm_mul_ps(_vector, _scalar);

我正在寻找类似...

__m128 _result = _mm_scale_ps(_vector, s);

最佳答案

根据您的编译器,您可以通过使用 _mm_set1_ps 稍微改进代码生成:

const __m128 scalar = _mm_set1_ps(s);
__m128 result = _mm_mul_ps(vector, scalar);

然而,像这样的标量常量应该只需要在任何循环之外初始化一次,因此性能成本应该无关紧要。 (除非标量值在循环内发生变化?)

与往常一样,您应该查看编译器生成的代码,并尝试在合适的分析器下运行您的代码,以查看热点的真实位置。

关于c - 上海证券交易所 (SIMD) : multiply vector by scalar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079580/

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