SSE 和 AVX 的 SIMD 数学库

2024-01-25

我正在寻找 SSE 和 AVX 的 SIMD 数学库(最好是开源的)。我的意思是,例如,如果我有一个带有 8 个浮点值的 AVX 寄存器 v,我希望 sin(v) 立即返回所有八个值的 sin。

AMD 有一个专有库 LibMhttp://developer.amd.com/tools/cpu-development/libm/ http://developer.amd.com/tools/cpu-development/libm/它有一些 SIMD 数学函数,但 LibM 仅在检测到 Intel CPU 没有的 FMA4 时才使用 AVX。另外,我不确定它是否完全使用 AVX,因为所有函数名称都以 s4 (d2) 而不是 s8 (d4) 结尾。它提供了比 Intel CPU 上的标准数学库更好的性能,但也好不了多少。

Intel 将 SVML 作为其 C++ 编译器的一部分,但该编译器套件在 Windows 上非常昂贵。此外,Intel 还削弱了非 Intel CPU 上的库。

我找到了以下 AVX 库,http://software-lisc.fbk.eu/avx_mathfun/ http://software-lisc.fbk.eu/avx_mathfun/,它支持一些数学函数(exp、log、sin、cos 和 sincos)。它为我提供了非常快的结果,比 SVML 更快,但我还没有检查准确性。它仅适用于单个浮点,不适用于 Visual Studio(尽管这很容易修复)。它基于另一个 SSE 库。

有人还有其他建议吗?

编辑:我发现一个关于这个主题有很多答案的帖子C 中的向量化三角函数? https://stackoverflow.com/questions/5109864/vectorized-trig-functions-in-c


我已经实现了 Vecmathlibhttps://bitbucket.org/eschnett/vecmathlib/ https://bitbucket.org/eschnett/vecmathlib/作为另外两个项目的通用库(Einstein Toolkit 和 poclhttp://pocl.sourceforge.net/ http://pocl.sourceforge.net/)。 Vecmathlib 是开源的,用 C++ 编写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSE 和 AVX 的 SIMD 数学库 的相关文章

随机推荐