LAPACK和BLAS的高性能版本是什么?

use*_*964 4 blas lapack

IMSL 的这一页说

为了获得改进的性能,我们建议链接 LAPACK 和 BLAS 的高性能版本(如果可用)。

什么是 LAPACK 和 BLAS 的高性能版本?

pau*_*l-g 5

有很多好的实现可供选择:

  1. 英特尔 MKL可能是英特尔机器上最好的。但它不是免费的,所以这可能是一个问题。
  2. 根据他们的基准测试OpenBLAS与 Intel MKL 相比相当不错,而且是免费的
  3. Eigen也是一个选项,并且有一个较大(尽管很旧)的基准测试,在小矩阵上显示出良好的性能(尽管从技术上讲它不是一个嵌入式 BLAS 库)
  4. ATLASOSKIPOSKI是自动调整内核的示例,它们声称可以在许多架构上工作

一般来说,在没有基准测试的情况下很难选择其中之一,因为:

  1. 一些实现在不同类型的矩阵上效果更好。例如,Eigen 在小秩(100s)的矩阵上效果更好
  2. 有些针对特定架构进行了优化(例如英特尔的)
  3. 在某些情况下,BLAS 库的多线程可能与多线程应用程序(例如 OpenBLAS)发生冲突
  4. 开发人员的基准测试可能倾向于强调对其实施效果更好的案例。

我建议选择一两个适用于您的用例的库,并针对您的特定(或类似)机器上的特定应用程序对它们进行基准测试。即使在编译代码之后,这也很容易做到。