【发布时间】:2025-12-29 21:20:17
【问题描述】:
我正在做一些统计计算。我需要它们快速,所以我重写了大部分以使用 SSE。我对它很陌生,所以我想知道这里的正确方法是什么:
据我所知,SSE 中没有 log2 或 ln 函数,至少没有到 4.1,这是我使用的硬件支持的最新版本。
是不是更好:
- 提取 4 个浮点数,并对它们进行 FPU 计算以确定熵 - 我不需要将任何这些值加载回 SSE 寄存器,只需将它们相加到另一个浮点数
- 为 SSE 找到一个执行 log2 的函数
【问题讨论】:
-
您的 log2 需要什么样的范围和精度?
-
我从 FPU 获得的准确度是可取的
-
周围似乎有一些 SSE log2 实现,例如jrfonseca.blogspot.com/2008/09/…
-
很好,谢谢!我会尝试并对其进行基准测试。将浮点数提取到一个数组中,然后通过 FPU 对其执行 4 个连续的 log2 操作,速度慢得令人失望。 Instruments 表示,它在那里浪费了 95% 的时间。
-
哇...我尝试了您链接的博客中的实现,我可以尽可能接近。它很快。将处理时间缩短至约 10%。非常感谢!
标签: sse simd logarithm natural-logarithm