BLAS简介
类似于Anaconda里面的numpy,C++里面也有类似的矩阵运算库,称之为BLAS(Basic Linear Algebra Subprograms):基础线性代数子程序库。
支持的数据类型有:
单精度浮点数(float)
双精度浮点数(double)
单精度复数
双精度复数
在机器学习里面一般我们只用float类型,很少使用double,考虑到性能,我们认为float的精度已经够了,而且速度快。还有一个更高级的叫LAPACK,现在我们常用的BLAS其实就是LAPACK里面的一部分。BLAS支持对子程序的封装,其实就是子函数了,它的子程序分类:
Level1: 标量操作、向量操作、向量-向量操作
Level2:矩阵-向量操作
Level3: 矩阵-矩阵操作
BLAS的实现
BLAS:标准实现(Fortran)
CBLAS:C的BLAS标准实现
Atlas:一种优化实现
GotoBLAS:多线程性能良好的优化实现(已停止更新)
OpenBLAS:目前性能最好的开源实现,基于GotoBLAS。
MKL:Intel实现,在Intel处理器上性能最佳
关于OpenBLAS
目前性能最好的开源实现OpenBLAS,它的开发者是中国人,中科院研究所的张先轶(博士),GitHub仓库叫xianyi。它是由中国人维护的目前最好的开源实现,Caffe里面用的BLAS库就是OpenBLAS。
OpenBLAS荣获2016CCF科学技术奖二等奖
完成单位:澎峰(北京)科技有限公司
OpenBLAS从2011年开始,基于GotoBLAS21..1.13版本对BLAS算法库进行全新开发,目前已经是全球最好的开源矩阵计算库。OpenBLAS支持主流X86、ARM、IBM Power8等众多CPU,并提供了对国产龙芯3A和3B处理器的支持。OpenBLAS已经成为多个开源或者商业软件的依赖库之一,如Julia, GNU Octave,Caffe等,并已成为全球性的开源软件,在美国、欧洲和日本都有广泛的应用。

张先轶,澎峰科技创始人、CEO。2016年1月-2016年9月MIT,CSAIL,博士后。2015年1月-2016年1月得州大学奥斯汀分校,ResearchFellow(博后)。2009年11月-2014年9月中科院软件所,助理研究员。


关注RISC-V发展,关注RVBoards开源生态,扫描下方二维码。
RVBoards期待您的加入

