openSUSE:Science 线性代数库
BLAS 和 LAPAK
BLAS(基本线性代数子程序)是一组低级内核子例程,执行常见的线性代数运算,例如复制、向量缩放、向量点积、线性组合和矩阵乘法。
LAPACK(线性代数包)是用于数值线性代数的软件库。它提供了求解线性方程组和线性最小二乘问题、特征值问题和奇异值分解的例程。它还包括实现相关的矩阵分解的例程,例如 LU、QR、Cholesky 和 Schur 分解。
BLAS 的实现
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
: