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

4
这篇IMSL页面说:

为了获得更好的性能,我们建议与高性能版本的LAPACK和BLAS链接(如果有)。

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


1
Atlas库、OpenBLAS、Intel MKL - ztik
@ctheo 非常感谢您。 - user15964
1
@ctheo,它们与标准Lapack和Blas相比如何?它们修改了源代码吗?它们是否不如标准Lapack和Blas稳健? - user15964
1
它们是针对CPU架构优化的。其接口与标准BLAS完全相同。我建议测试一下它们。 - ztik
2个回答

5

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

  1. Intel MKL 可能是在 Intel 机器上最好的选择。但它不免费,这可能是一个问题。
  2. 根据他们的 基准测试, OpenBLAS 在与 Intel MKL 的比较中表现相当好,并且是免费的。
  3. Eigen 也是一个选择,并且有一个相当大的(虽然有点老的)基准测试,显示在小矩阵上具有良好的性能(尽管它在技术上不是一个即插即用的 BLAS 库)。
  4. ATLASOSKIPOSKI 是自动调整内核的示例,它们声称可以在许多架构上工作。

通常情况下,挑选这些库中的一个是相当困难的,因为:

  1. 一些实现在不同类型的矩阵上表现更好。例如,Eigen在秩较小的矩阵(100个)上表现更好。
  2. 有些针对特定架构进行了优化(例如Intel的)。
  3. 在某些情况下,BLAS库的多线程可能会与多线程应用程序发生冲突(例如OpenBLAS)。
  4. 开发者的基准测试可能会强调适用于他们实现的情况。

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


非常感谢您提供丰富的信息! - user15964
而cuBLAS是最高效的。 - Константин Ван

-2

LAPACK和BLAS是性能库,为线性方程组提供基本的线性代数数学运算。例如,在计算机视觉中(对象检测和分类)、经典算法、建模等领域中,您可以发现这些库非常有用。

TAsking提供了LAPACK和BLAS性能库的完整C实现,两个库都符合ISO-C99标准,并提供完整的文档和示例,您可以在此处查看: http://www.tasking.com/products/tasking-lapack-performance-libraries


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接