大家好,欢迎来到IT知识分享网。
BLAS
BLAS 是「Basic Linear Algebra Subprograms」首字母缩写,即「基础线性代数程序库」。BLAS 是应用程序接口(API)标准,用以规范发布基础线性代数操作的基础库(如矢量或矩阵乘法)。BLAS 主要用来做基础的矩阵计算,或是向量计算,分为三级:
- BLAS 1 级,主要做向量与向量计算
- BLAS 2 级,主要做矩阵和向量计算
- BLAS 3 级,主要是矩阵和矩阵计算
该程序集最初发布于 1979 年,并用于建立更大的数值程序包(如 LAPACK 等)。在高性能计算领域,BLAS 被广泛使用。例如,测试超级计算机性能,都要做 LINPACK 测试,运算成绩则很大程度上取决于 BLAS 中子程序 DGEMM 的表现。许多科学计算或工程模拟,在转换后都变成了矩阵计算。为提高性能,各软硬件厂商则针对其产品对 BLAS 接口实现进行高度优化。
BLAS 的实现
BLAS 可以看作一种标准,定义了相关接口,就像 HTML、CSS、ECMAScript 等标准,各浏览器厂商有不同实现,性能也各不相同。
BLAS 有许多实现,包括开源版本和商业版本。硬件厂商如 Intel、AMD、NVIDIA、IBM 等公司都有自己的实现,配合自己的硬件,提供更底层的优化,打造整体解决方案:
- MKL:Intel Math Kernel Library
- ACML:AMD Core Math Library
- ESSL:IBM Engineering and Scientific Subroutine Library
- cuBLAS:NVIDIA
开源实现中,比较有名的项目有:
- Netlib BLAS
- GSL:GNU Scientific Library
- ATLAS:Automatically Tuned Linear Algebra Software
- GotoBLAS
- OpenBLAS
Netlib 用 Fotran 语言实现了 BLAS,其代码库的名字也叫 BLAS,要注意区分。而 CBLAS 则是 Netlib 对 Fortran 版本 BLAS 的 C / C++ 封装。
GotoBLAS 是德克萨斯高级计算中心 Kazushige Goto 打造的 BLAS 开源实现,采用 BSD 许可。2003 年之前,全球 Top 10 超级计算机中 7 台用到了 GotoBLAS。
OpenBLAS
GotoBLAS 于 2010 年终止开发,OpenBLAS 是其继任者。中国科学院博士、MIT 博士后张先轶是 OpenBLAS 项目的创始人和主要维护者。
OpenBLAS 影响巨大,除 IBM、ARM、华为等巨头公司在使用外,还吸引了全球的院校、开发者们关注。
LAPACK
LAPACK 是「Linear Algebra PACKage」的缩写,即「线性代数包」,采用 Fortran 语言编写,底层是 BLAS,但运行效率比 BLAS 库更高。为了进行 C、C++ 语言的开发,Netlib 开发了 CBLAS 和 CLAPACK。
LAPACK 的功能更丰富,主要用于扩展 BLAS 中第 3 级的函数,在 BLAS 的基础上定义了很多矩阵和向量高级运算的函数,如矩阵分解、求逆和求奇异值等。LAPACK 提供了丰富的工具函式,可用于诸如解多元线性方程式、线性系统方程组的最小平方解、计算特征向量、用于计算矩阵 QR 分解的豪斯霍尔德变换,以及奇异值分解等问题。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/160994.html