线性代数的CPU指令集?

我处于一种情况,我必须用几乎不会改变的矩阵进行一些线性代数计算,并且我正在考虑使用C ++中的很多小向量(极少数3x3或4x4矩阵和带有3个值的向量)一些针对x86 32位,x86 64位,ARMv5以及更高版本的CPU指令可加快速度并简化数学运算的设计。

令人惊讶的是,我还没有找到线性代数的真实集合,其中大部分都是浮点数学,缓存,按照您的要求进行了优化,但对矩阵和线性代数没有任何真正的意义,仅仅是我或者没有为线性代数设置集合?

AMD的新FMA3看起来很有趣,但在现代CPU中仍然非常罕见,我想坚持一个像x86上的SSE或ARM上的ARMv5一样流行的东西。

所以有一个流行的快速线性代数计算指令集? 如果速度足够好,我甚至可以接受很多错误。

编辑:

我还应该注意到,实际上我的编译器是:

  • GCC
  • MinGW的
  • 视觉工作室
  • 所以我想在x86和ARM上都有一个开源产品和一个可移植的库。

    编辑2: Eigen不支持多线程执行,对我来说这是一个很大的失败。


    可能你已经知道了这一点,但对于x86架构,我可以推荐你通过AVX或AVX2的英特尔BLAS。有关详细信息,请看这里:http://software.intel.com/en-us/articles/optimize-for-intel- avx-using-intel-math-kernel-librarys-basic-linear-algebra-subprograms-blas-with-dgemm-routine or here http://software.intel.com/en-us/articles/intel-math-kernel -library-Intel的MKL-BLAS-cblas和 - LAPACK-compilinglinking函数-FORTRAN和 - CC-呼叫


    你实际上并不是在寻找一个完整的线性代数库,而只是寻找可移植的矢量操作。

    搜索“便携式C ++ SIMD”会生成大量相关的点击。 其中最有前途的是

  • Vc:用于C ++的便携式零开销SIMD库
  • Vc是一个免费的软件库,用于简化C ++代码的显式矢量化。 它具有直观的API,并提供不同编译器和编译器版本之间的可移植性,以及不同向量指令集之间的可移植性。

    链接地址: http://www.djcxy.com/p/62987.html

    上一篇: CPU instruction sets for linear algebra?

    下一篇: C Snippets for Algebra in Finite Prime Fields