良好的便携式SIMD库

Bud*_*ric 23 c++ open-source cross-platform simd

任何人都可以推荐提供ac/c ++ API的便携式SIMD库,适用于Intel和AMD扩展以及兼容GCC的Visual Studio.我希望加快缩放512x512双打阵列的速度.矢量点积,矩阵乘法等

到目前为止,我找到的唯一一个是:http: //simdx86.sourceforge.net/但是第一页说它不能在visual studio上编译.

还有英特尔IPP,这对我收集的AMD不起作用.还有来自AMD的Framewave,但我在编译和链接他们的库时遇到了一些问题,他们的论坛已经完全死了.有人设法在任何地方使用Framewave吗?

谢谢.

Jim*_*ker 10

Eigen是一个MPL2专用的头部C++库,具有针对SSE,Neon和Altivec优化的矢量/矩阵数学.他们的附加模块中有更复杂的数学运算.

  • Eigen被重新许可给MPL2 http://eigen.tuxfamily.org/index.php?title=News:Relicensed_to_MPL2,这是很好的一步. (2认同)

Phi*_*ler 9

由于您提到了对矩阵和向量的高级操作,因此可能会对ATLAS,Intel的MKL,PLASMAFLAME感兴趣.

一些C++矩阵数学库包括来自Boost,Armadillo,Eigen,IT ++和Newmat的uBLAS.POOMA库可能还包括其中的一些内容.这个问题也指MTL.

如果您正在寻找更低级别的可移植性原语,我的一位同事已经开发了一个围绕SSE2,Altivec,VSX,Larrabee和Cell SPE向量操作的包装器.它可以在我们的源代码库中找到,但如果您希望将其作为工作的一部分进行分发,则其许可(学术)可能不合适.它仍然处于重大发展阶段,以满足其针对的应用需求范围.