gpt4 book ai didi

c++ - 关于整数和浮点性能的 SSE4 和 SSE2 - 哪个更快?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:34 27 4
gpt4 key购买 nike

虽然您通常在 CPU 上获得比浮点性能更好的整数算术性能,但有人可以澄清 SIMD 版本的情况。例如:

 __m128i _mm_mul_epi32(__m128i a, __m128i b);
//(multiplies 2 integer vectors)

对比:

__m128 _mm_mul_ps(__m128 a , __m128 b );
//(multiplies 2 float vectors)

哪个会产生更高的性能?(假设机器具有 SSE4 功能)。我这么说是因为我根据 SSE2 指令编写了我自己的小数学库,我不知道我是否应该继续使用__m128i.

最佳答案

让我展示一下我回答这些类型问题的第一个地方:Intel Intrinsic Guide在线的。您提供内在函数,它会告诉您它的作用,并通过 Haswell(很快还有 Broadwell)处理器为 Nehalem 提供延迟和吞吐量。以下是结果:

_mm_mul_ps

                Latency    Reciprocal throughput
Haswell 5 0.5
Ivy Bridge 5 1
Sandy Bridge 5 1
Westmere 4 1
Nehalem 4 1

_mm_mul_epi32

                Latency    Reciprocal throughput
Haswell 5 1
Ivy Bridge 3 1
Sandy Bridge 3 1
Westmere 3 1
Nehalem 3 1

延迟越低,吞吐量越低越好。从这些表中我们可以得出结论

  • 除了 Haswell,_mm_mul_epi32 的延迟小于 _mm_mul_ps
  • 在 Haswell 上的延迟是一样的,
  • 除了 Haswell,吞吐量是一样的,
  • 在 Haswell 上,_mm_mul_ps 的吞吐量是 _mm_mul_epi32 的两倍。

Haswell 的吞吐量是唯一的惊喜。

如果您想要 Nehalem 之前的处理器和/或 AMD 处理器的结果,请参阅 Agner Fog 的 Instruction tables manual或运行他的 tests programs他用它来测量延迟和吞吐量。

关于c++ - 关于整数和浮点性能的 SSE4 和 SSE2 - 哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18422302/

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