繁体   English   中英

线性代数的CPU指令集?

[英]CPU instruction sets for linear algebra?

在这种情况下,我必须使用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的Intel BLAS。有关详细信息,请参见: http ://software.intel.com/zh-cn/articles/optimize-for-intel- avx-using-intel-math-kernel-librarys-basic-linear-algebra-subprograms-blas-with-dgemm-routine或此处http://software.intel.com/zh-cn/articles/intel-math-kernel -library-Intel的MKL-BLAS-cblas和- LAPACK-compilinglinking函数-FORTRAN和- CC-呼叫

您实际上并不是在寻找完整的线性代数库,而只是在寻找可移植的矢量运算。

搜索“便携式C ++ SIMD”会产生大量相关匹配。 最有前途的之一是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM