openSUSE:Science 线性代数库

跳转到:导航搜索

BLAS 和 LAPAK

BLAS(基本线性代数子程序)是一组低级内核子例程,执行常见的线性代数运算,例如复制、向量缩放、向量点积、线性组合和矩阵乘法。

LAPACK(线性代数包)是用于数值线性代数的软件库。它提供了求解线性方程组和线性最小二乘问题、特征值问题和奇异值分解的例程。它还包括实现相关的矩阵分解的例程,例如 LU、QR、Cholesky 和 Schur 分解。

BLAS 的实现

  • BLAS - 参考实现
  • ATLAS - 自动调整线性代数软件
  • OpenBLAS - 基于 GotoBLAS2 的优化 BLAS 库

LAPACK 的实现

  • LAPACK - 参考实现
  • ATLAS - 提供优化的 LAPACK 子集
  • OpenBLAS - 提供具有一些优化的 LAPACK

openSUSE 特定配置

OpenBLAS

OpenBLAS 包支持多种架构。所有特定优化都包含在库中,并在运行时动态切换。
库有三种变体

  • 串行库 (libopenblas_serial0)
  • 带有 OpenMP 支持 (libopenblas_openmp0 或 libopenblaso0)
  • 带有线程支持 (libopenblas_pthreads0 或 libopenblasp0)

切换实现

openSUSE 默认使用参考 BLAS 和 LAPACK 实现,但 ATLAS 或 OpenBLAS 通常快得多。您可以通过 update-alternatives 机制进行切换

BLAS
/usr/sbin/update-alternatives --config libblas.so.3_x86_64

示例

There are 4 choices for the alternative libblas.so.3 (providing /usr/lib64/libblas.so.3).

  Selection    Path                             Priority   Status
------------------------------------------------------------
* 0            /usr/lib64/libblas.so.3.4.2       50        auto mode
  1            /usr/lib64/atlas/libsatlas.so.3   20        manual mode
  2            /usr/lib64/atlas/libtatlas.so.3   20        manual mode
  3            /usr/lib64/libblas.so.3.4.2       50        manual mode
  4            /usr/lib64/libopenblas.so.0       20        manual mode
LAPAK
/usr/sbin/update-alternatives --config liblapack.so.3_x86_64

示例

There are 3 choices for the alternative liblapack.so.3 (providing /usr/lib64/liblapack.so.3).

  Selection    Path                             Priority   Status
------------------------------------------------------------
* 0            /usr/lib64/liblapack.so.3.4.2     50        auto mode
  1            /usr/lib64/atlas/libsatlas.so.3   20        manual mode
  2            /usr/lib64/atlas/libtatlas.so.3   20        manual mode
  3            /usr/lib64/liblapack.so.3.4.2     50        manual mode