blas、lapack和atlas、openblas的区别联系

1、Fortran语言

Fortran语言是为了满足数值计算的需求而发展出来的一种编程语言。

Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。它可以直接对矩阵和复数进行运算,自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。
许多科学计算库的底层实现都是采用的Fortran语言,下面介绍的BLAS和LAPACK也不例外。


2、BLAS和LAPACK
BLAS的全称是Basic Linear Algebra Subprograms,中文可以叫做基础线性代数子程序。它定义了一组应用程序接口(API)标准,是一系列初级操作的规范,如向量之间的乘法、矩阵之间的乘法等。许多数值计算软件库都实现了这一核心。
BLAS是一组向量和矩阵运行的接口规范,也可以称为API规范。Netlib用fortran实现了BLAS的这些API接口,得到的库也叫做BLAS。Netlib只是一般性地实现了基本功能,并没有对运算做过多的优化。
LAPACK (linear algebra package),是著名的线性代数库,也是Netlib用fortran语言编写的。其底层是BLAS,在此基础上定义了很多矩阵和向量高级运算的函数,如矩阵分解、求逆和求奇异值等。该库的运行效率比BLAS库高。
从某个角度讲,LAPACK也可以称作是一组科学计算(矩阵运算)的接口规范。Netlib实现了这一组规范的功能,得到的这个库叫做LAPACK库。
前面BLAS和LAPACK的实现均是用的Fortran语言。为了方便c程序的调用,Netlib开发了CBLAS和CLAPACK。其本质是在BLAS和LAPACK的基础上,增加了c的调用方式。


3、第三方实现

上面提高,可以将BLAS和LAPACK看做是接口规范,那么其他的组织、个人和公司,就可以根据此规范,实现自己的科学计算库。
开源社区实现的科学计算(矩阵计算)库中,比较著名的两个就是atlas和openblas。它们都实现了BLAS的全部功能,以及LAPACK的部分功能,并且他们都对计算过程进行了优化。
Atlas (Automatically Tuned Linear Algebra Software)能根据硬件,在运行时,自动调整运行参数。Openblas在编译时根据目标硬件进行优化,生成运行效率很高的程序或者库。Openblas的优化是在编译时进行的,所以其运行效率一般比atlas要高。但这也决定了openblas对硬件依赖性高,换了机器,可能就要重新编译了。(例如A和B两台机器cpu架构、指令集不一样,操作系统一样,在A下编译的openblas库,在B下无法运行,会出现“非法指令”这样的错误)
商业公司对BLAS和LAPACK的实现,有Intel的MKL和AMD的ACML。他们对自己的cpu架构,进行了相关计算过程的优化,实现算法效率也很高。
NVIDIA针对其GPU,也推出了cuBLAS,用以在GPU上做矩阵运行。


一些BLAS、LAPACK相关关系参考链接:
https://stackoverflow.com/questions/17858104/what-is-the-relation-between-blas-lapack-and-atlas
https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms
https://li7hui.wordpress.com/2012/02/19/blas-lapack-and-other-numerical-computation-libs/
CBLAS的安装与使用
http://blog.csdn.net/cleverysm/article/details/1925549
kaldi中对所支持矩阵库的说明
http://kaldi-asr.org/doc/matrixwrap.html
  • 21
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要安装BLASLAPACK,您可以按照以下步骤进行操作: 1. 首先,确保您的系统中已经安装了C和Fortran编译器。这些编译器对于编译BLASLAPACK是必需的。 2. 下载BLAS。您可以从官方网站或其他可靠的资源下载BLAS的源代码。 3. 解压下载的BLAS源代码文件。 4. 进入解压后的BLAS目录,并打开Makefile文件。 5. 在Makefile文件中,根据您的系统配置,可能需要进行一些编辑。确保设置正确的编译器和编译选项。例如,您可能需要设置正确的编译器路径、优化标志等。 6. 执行以下命令编译和安装BLAS: ``` make make PREFIX=/path/to/installation install ``` 将 "/path/to/installation" 替换为您希望安装BLAS的路径。 7. 下载LAPACK。您可以从官方网站或其他可靠的资源下载LAPACK的源代码。 8. 解压下载的LAPACK源代码文件。 9. 进入解压后的LAPACK目录,并打开make.inc文件。 10. 在make.inc文件中,根据您的系统配置,可能需要进行一些编辑。确保设置正确的编译器和编译选项。例如,您可能需要设置正确的编译器路径、优化标志等。 11. 执行以下命令编译和安装LAPACK: ``` make make PREFIX=/path/to/installation install ``` 将 "/path/to/installation" 替换为您希望安装LAPACK的路径。 安装完成后,您就可以在您的C或Fortran项目中使用BLASLAPACK了。请注意,上述步骤是基本的安装过程,具体步骤可能因您的系统配置和要求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值