【发布时间】:2016-06-11 16:43:31
【问题描述】:
我目前正在优化一个程序,我需要计算多个类型__m128 的倒数平方根。最初,在矢量化之前(当数字是浮点数时),它只是ans = 1.0f / sqrt(num),但现在我有_mm_rsqrt_ps(num)。唯一的问题是,在处理更大的数据集时,这会在一定程度上影响我的答案。
我想知道_mm_div_ps() 和_mm_sqrt_ps 函数的使用是否会更准确(尽管我预计需要更多时间),以及如何将1.0f 分配给键入__m128。
谢谢。
【问题讨论】:
-
__m128 是单精度浮点类型的 4 元素向量,不能为其分配单个浮点数。
-
有时 sqrt 是通过将输入乘以 rsqrt 来计算的,因为这样更容易,我怀疑做 1/sqrt 有助于提高精度
-
那么,例如,我如何获得一些
__m128来包含1.0的值,以便我可以使用_mm_div_ps(1_v, sqrt_v)? -
您怀疑它有助于提高精度?
标签: c performance intrinsics