BLAS线性代数库和变种

    xiaoxiao2021-03-25  186

    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
    转载请注明原文地址: https://ju.6miu.com/read-1910.html

    最新回复(0)