【发布时间】:2012-02-24 20:52:41
【问题描述】:
在 SSE (AVX) 中同时处理整数和浮点数时,将所有整数转换为浮点数并仅使用浮点数是否是一种好习惯?
因为在那之后我们只需要几条 SIMD 指令,而我们只需要使用加法和比较指令 (<, <=, ==),我希望这种转换应该完全保留。
【问题讨论】:
-
理想情况下,最好摆脱浮点数而不是整数。整数更快、更好、更强:)
-
你需要展示一个你想要做什么的例子。
int!=float。而且 AVX 还不支持 256 位宽的整数运算。 (AVX2 会)所以我明白你为什么要这样做。是否会更快将在很大程度上取决于您要执行的操作。 -
int 和 float 不同,不可互换。使用最能代表您的数据的类型。
-
目前,整数 SSE 比 FP-AVX 具有更高的吞吐量和更低的延迟。所以如果你只做加法和比较,我会坚持使用整数 SSE 而不是 FP-AVX。当它出现时,您还将获得 AVX2 的好处。受益于使用浮点数进行整数运算的应用程序子集相当小众。 (但它们确实存在)
-
@Mysticial:所以,您可以将我们的算法分为两部分:int-input-version 与
__m128i一起使用,float-input-version 与__m256一起使用,对吧?