gpt4 book ai didi

c++ - SSE 的整数/浮点值

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

我必须将一个整数 vector 与另一个整数 vector 相乘,然后将结果(因此是一个整数 vector )与一个浮点值 vector 相加。

我应该对整数使用 MMX 还是 SSE4,或者我可以只对所有这些值使用 SSE(即使有整数?)将整数放入 __m128 寄存器?

确实,我经常在 __m128 寄存器中使用整数,我不知道我是在浪费时间(隐式转换值)还是一样。

我正在使用 -O3 选项进行编译。

最佳答案

您可能应该只对所有内容使用 SSE(MMX 只是 SSE 的一个非常过时的前身)。如果您打算主要针对较新的 CPU,那么您甚至可以考虑 AVX/AVX2。

首先在标量代码中干净、稳健地实现所有内容,然后对其进行基准测试。标量实现可能足够快,您不需要做任何其他事情。此外,gcc 和其他编译器(例如 clang、ICC,甚至 Visual Studio)在自动矢量化方面做得相当不错,因此您可以“免费”获得满足您的性能需求的 SIMD 矢量化代码。但是,如果此时您仍然需要更好的性能,那么您可以开始将标量代码转换为 SSE。尽管为了验证和基准测试目的保留原始标量实现——优化代码时很容易引入错误,了解优化代码比基线代码快多少是很有用的(你可能正在寻找 2 倍到 4 倍之间的某处) SSE 比标量代码更快)。

关于c++ - SSE 的整数/浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777642/

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