SIMD C++ 库

Posted

技术标签:

【中文标题】SIMD C++ 库【英文标题】:SIMD C++ library 【发布时间】:2011-05-22 22:54:32 【问题描述】:

我将 Visual Studio 与 DiretX XNA 数学库一起使用。现在,我使用 GNU 编译器集合。建议我一个带有良好文档的 SIMD 数学库。

【问题讨论】:

【参考方案1】:

本征http://eigen.tuxfamily.org/index.php?title=Main_Page

它支持开箱即用的 SIMD 扩展,有据可查,非常灵活,它提供了许多线性代数方法的高质量实现,并且具有所有重载运算符的优点。已经用它做了几个科学相关的项目,很开心,尤其是在和其他库玩过之后。

【讨论】:

【参考方案2】:

有 NT2 库。 http://nt2.sourceforge.net/

这个图书馆有计划,建议给Boost C++ Libraries。

【讨论】:

他们声明他们支持 SIMD 扩展,但由于这是一个通用的数值线性代数库,我认为他们不会针对 4x4 线性代数进行优化,我认为这是他想要的,并且这有助于非常直接的 SSE 化,比一般线性代数更是如此。 我们还没有。当前的重写包括这样的优化,但还没有。无论如何,我们的目标是比纯粹的 LA 更加多架构和多领域。不过感谢您的关注:)【参考方案3】:

内置的怎么样? http://ds9a.nl/gcc-simd/

【讨论】:

这不是库,只是用于使用 SSE 指令的 gcc 内部函数,非常类似于 Intel/MSVC 的内部函数(gcc 也支持)。 这对于简单的操作来说已经足够了。您可能还喜欢:sourceforge.net/projects/simdx86【参考方案4】:

英特尔 ICC 编译器附带一个名为 MKL 的 SSE 优化数学库。

【讨论】:

【参考方案5】:

Bullet Physics Engine 具有针对 SSE 和 PS3 优化的 small matrix math library。

另一个您可能感兴趣的库是Intel Integrated Performance Primitives。这个库优化的很好,但不是免费的,也没有源代码。

【讨论】:

以上是关于SIMD C++ 库的主要内容,如果未能解决你的问题,请参考以下文章

动态分配 SIMD 向量数组是不是安全?

用 C++ 实现 SIMD

如何在 Visual Studio 2015(用于 C++)中仅禁用 SIMD 自动矢量化优化?

C++:英特尔 SIMD 内部函数类成员的初始化

如何使用内部函数 C++ 将 3 个加法和 1 个乘法转换为矢量化 SIMD

Swift 中的向量 SIMD 类型