【发布时间】:2016-09-23 00:09:50
【问题描述】:
我对 Eigen 和 Blas 做了一些基本的阅读。两个库都支持矩阵矩阵、矩阵向量乘法。我不明白在哪种情况下应该使用哪个?在我看来,两者的性能几乎相同。如果有人能给我一些资源或者只是告诉我一个图书馆比另一个图书馆有什么优势,那就太好了?或者这两者在矩阵和向量操作的情况下有何不同?提前致谢。
【问题讨论】:
标签: linear-algebra matrix-multiplication eigen blas
我对 Eigen 和 Blas 做了一些基本的阅读。两个库都支持矩阵矩阵、矩阵向量乘法。我不明白在哪种情况下应该使用哪个?在我看来,两者的性能几乎相同。如果有人能给我一些资源或者只是告诉我一个图书馆比另一个图书馆有什么优势,那就太好了?或者这两者在矩阵和向量操作的情况下有何不同?提前致谢。
【问题讨论】:
标签: linear-algebra matrix-multiplication eigen blas
使用 Eigen,它更完整,更易于使用。然后,如果您想知道另一个完全优化的 BLAS 实现是否可以为您提供更高的性能,那么只需使用 -DEIGEN_USE_BLAS 重新编译您的代码并链接到您最喜欢的 blas 并自己查看。
另外,在使用 Eigen 时,不要忘记启用编译器优化,例如-O3 和您的硬件支持的指令集,例如,使用最新 Eigen 时的 -mavx -mfma。
【讨论】:
所以这个问题的答案就在这里。
http://eigen.tuxfamily.org/index.php?title=FAQ#How_does_Eigen_compare_to_BLAS.2FLAPACK.3F
或多或少,我主要使用 Eigen,因为它有一个舒适的界面。如果您需要速度和多核并行性,或者您的代码中只有很少但耗时的线性代数内容,请选择 GotoBlas2。通常它在 Intel 机器上是最快的。
【讨论】: