BLAS线性代数库和变种

BLAS库和变种:
-------------------------------------
BLAS:原生Fortran-style,是一个接口定义规范不是实现。
Netlib BLAS:BLAS的默认实现。
CBLAS: Netlib BLAS的c接口
GotoBLAS2:2010年已经不维护。
ATLAS:可自动调优的BLAS实现。速度不太好。math-atlas在github上开发力量弱。
**OpenBLAS:基于GotoBLAS2-1.13 BSD版,中科院软件所团队更新
**LAPACK: 依赖BLAS,实现上层算法,函数支持多线程。持续更新。
CLAPACK: c接口
BLACS: 面向线性代数的通讯库,通常是MPI版的BLACS。2000年之后无更新。 
ScaLAPACK:LAPACK的升级版,依赖BLACS通讯库支持分布式内存。2012年之后无更新
PLASMA:没有取代ScaLAPACK,2009年之后无更新。
f2c: fortran to c
f2j: fortran to java,主要为把BLAS、LAPACK和ARPACK源码翻译为java类,spark ml默认用到。
**cuBLAS:NVIDIA的GPU版本
*clBLAS:OpenCL版本
**eigen3: 线性代数集合的c/c++模板。tensorflow和graphlab中用到。偏向c++应用。据说性能不错。3.1.1之后修改为MPL2 license.
*ARPACK: 处理大矩阵(外存处理)的只需要返回最重要的部分特征值的问题。scipy, mathematica,matlab中都用到。
**Intel MKL: 基于Intel CPU,支持多线程和向量化的线性代数库(兼容blas, lapack api,性能优),FFT, 神经网络的算法加速。

注释:
**表示重要,*表示需要关注。其他可暂不考虑

选型:
BLAS中选择OpenBLAS,因为性能好。LAPACK还算可靠

参考:
1. https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms
2. http://eigen.tuxfamily.org/index.php?title=Benchmark
3. https://www.zhihu.com/question/27872849
4. http://eigen.tuxfamily.org/dox/GettingStarted.html
5. http://www.netlib.org/blas
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值