走进BLAS/LAPACK(1)
来源:互联网 发布:dota2能在mac上玩吗 编辑:程序博客网 时间:2024/05/18 01:41
引言
BLAS和LAPACK是什么?相信大部分对线性代数计算有初步认识的人都知道是专门为线性代数开发的工具库。blas的全名是basic linear algebra subprograms,共有三个层次的计算:
- level 1:向量与向量之间的计算
- level 2:向量与矩阵之间的计算
- level 3:矩阵与矩阵之间的计算
而lapack则是建立在blas之上的更复杂的计算程序,比如说LU分解,
配置
所有代码的编译都是在ubuntu 14.04 LTS 上,C/C++用的是gcc,而fortran用的是gfortran,我没在windows平台上试过,所以不清楚。说句实在的,想要学会使用blas这一类库还是在linux平台上更好一些。每个安装的包我都会在介绍时注明版本,这里就不多说了。
简介
虽然blog的名字是走进blas/lapack,但介绍blas的时间会远远超过lapack,原因有两点:第一,lapack是建立在blas之上的,当你弄明白了blas的原理,lapack的使用也就不用多说了。第二,同时也是主要原因,blas的种类太多了,而lapack相对较少。对,blas有很多种,本质上说,blas只是一个规范,它规定了基本函数的名称与作用,输入输出的参数数目和类型,至于如何实现,就有不同的版本了,这是为什么了呢?
原因很简单,还是回到那句话,lapack是建立在blas之上的,也就是说,lapack的运算速度很大程度依赖于blas的运算速度。因此,对于blas的优化就显得很重要。而像这种底层代码的优化,就不仅仅限于软件层面上了,更多是在于硬件方面,如何充分利用不同的系统架构,不同的处理器的特点,使之能发挥出最大的性能就成了关键。比如说同样是linux的操作系统,使用intel处理器和使用AMD处理器,二者特有的blas库不一样;都是用intel的处理器,ubuntu和MACBOOK的专属blas也不一样。通常来说,最早Fortran版的blas是最慢的,不建议使用,因此也被称为reference implmentation (只有参考的价值,没有使用的价值),还有其它各种版本的implementation,强烈建议看完blas(维基百科) 再接下看这篇博客。这样对我接下来要干的事情也有一个整体的印象。
限于我笔记本的配置,我只会测试reference blas,open blas,ATLAS和MKL。其间也会简单介绍一下cblas这个C语言的接口。
- 走进BLAS/LAPACK(1)
- 走进BLAS/LAPACK(2)--blas
- 走进blas/lapack(3)--cblas
- BLAS/ARPACK/LAPACK
- BLAS+BLACS+LAPACK+SCALAPACK安装
- BLAS CBLAS LAPACK编译使用
- blas和lapack的安装
- blas和lapack的安装
- LAPACK 和 BLAS 库使用简介
- BLAS/LAPACK 函数/子程序命名规则
- Using BLAS and LAPACK from C/C++
- scipy lapack/blas not found windows
- linux下安装blas和lapack
- centos6.4安装matplotlibyum install lapack lapack-devel blas blas-devel
- Linking LAPACK and BLAS libraries with Fortran and C code
- mingw+boost+boost bindings+lapack+blas终于能运行了
- BLAS+BLACS+LAPACK+ATLAS+SCAPACK+FFTW+HPL 英文介绍
- window下lapack库和blas库的编译
- MySQL笔记一
- 【seen看世界】:朋友之间的感情
- 核心对象+持久对象全析(2)
- 深究JavaScript——apply、call
- hdu 1556 color the ball
- 走进BLAS/LAPACK(1)
- webstrom智能提示如何设置
- 人生就是一场直播
- 核心对象+持久对象全析(3)
- 使用FDISK工具为SD卡同时创建FAT分区和EXT4分区
- android 最简单的侧滑实现DrawerLayout
- Windows核心编程 第六章 线程基础知识 (下)
- 2016 大连网络赛 & hdu5875 (优先队列+离线)★
- 中坠表达式转后缀表达式(ASP.NET)