BLAS¶
Basic Linear Algebra Subprograms(基本线性代数运算)
BLAS(Basic Linear Algebra Subprograms)是一组定义了一系列基本线性代数运算的标准接口,旨在提供高效、可移植且可扩展的线性代数操作。这一标准定义了一组常用的线性代数操作,如矩阵乘法、向量加法、向量点积等。
BLAS 最初由于提供高性能的数学库,使得科学和工程计算任务能够在各种计算平台上得到优化。它为科学计算领域提供了一种标准化的接口,使得开发人员可以编写与硬件无关的代码,而不必担心特定平台上的底层实现细节。
BLAS 的实现通常会针对特定的硬件体系结构进行优化,以充分利用硬件并提高运算效率。有多个 BLAS 的实现,其中一些常见的包括 Intel Math Kernel Library(MKL)、OpenBLAS、ATLAS 等。
注意 BLAS 是一个接口的标准而不是某种具体实现(implementation)。简单来说,就是不同的作者可以各自写出不同版本的 BLAS 库,实现同样的接口和功能,但每个函数内部的算法可以不同。 这些不同导致了不同版本的 BLAS 在不同机器上运行的速度也不同。
BLAS 的官网实现版本的 BLAS 被称为 reference BLAS,运行速度较慢,通常被其他版本用于衡量性能。对于 Intel CPU 的计算机,性能最高的是 Intel 的 MKL <https://software.intel.com/en-us/mkl>`_(Math Kernel Library) 中提供的 BLAS。MKL 虽然不是一个开源软件,但目前可以免费下载使用。如果想要免费开源的版本,可以尝试 `OpenBlas 或者 ATLAS。另外,无论是否使用 MKL,BLAS 的文档都推荐看 MKL 的相关页面。
BLAS 操作包括:
级别 1 操作: 包括向量和向量之间的操作,如点积、向量范数等。
级别 2 操作: 包括矩阵和向量之间的操作,如矩阵向量乘法。
级别 3 操作: 包括矩阵和矩阵之间的操作,如矩阵乘法。
安装 BLAS 库:
sudo apt-get install libopenblas-dev
sudo yum install openblas-devel
应用-Gensim¶
配置 Gensim 编译选项:
export BLAS=/path/to/your/blas/library
安装 Gensim:
pip install gensim
验证 BLAS 优化是否启用:
import gensim
# 1,则表示 BLAS 优化已经成功启用
# 0,则表示没有启用
print(gensim.models.word2vec.FAST_VERSION)