BLAS/ARPACK/LAPACK
来源:互联网 发布:mac用什么压缩软件 编辑:程序博客网 时间:2024/05/19 17:22
来自wiki ARPACK LAPACK BLAS
首先,spark里面有个机器学习的库MLlib,MLlib里面有个线性代数包linalg,linalg里面主要实现了稠密矩阵,向量,还有三种分布式矩阵,我们主要用到的就是这个linalg包下面的SVD分解和PCA。观察源代码,发现linalg里面引用了Breeze库。Breeze是什么呢?就看本博客的第一篇文章。简单的说Breeze是用scala语言实现的数值运算库,里面有linalg这种线性运算包,可以进行矩阵,甚至是张量运算。Breeze又隶属于ScalaNLP 工程。ScalaNLP又是什么呢?这就扯远了。。。主要是Breeze又基于netlib-java和 jblas.然后呢,netlib-java和 jblas.是对BLAS,LAPACK,ARPACK这些Fortran子库的低层次包装。SVD分解主要依赖Fortran库里面的ARPACK。所以spark的所有结点都必须安装gfortran runtime library。
挖掘线路是这样的spark ->MLlib->linalg->Breeze->netlib-java和 jblas->ARPACK.
据说matlab是这样封装的。Matlab ->java界面->中间C++包装->底层计算调用LAPACK,BLAS (它们也是fortran数值计算库)。
ARPACK,是ARnoldi PACKage的简称,是用Fortran 77编写的数值计算软件库,针对大规模稀疏矩阵或者structured的矩阵,求部分的特征值以及对应的特征向量的。可以用Implicitly Restarted Arnoldi Method (IRAM)方法。当矩阵是对称矩阵时,就采用Lanczos算法。它被用于许多有名的数值计算环境,比如说:SciPy , GNU Octave and MATLAB。ARPACK的强大之处在于可以用任何存储格式的矩阵,因为它不直接对矩阵进行计算,而且最终将这些复杂运算都化成了矩阵与向量相乘。
LAPACK,是Linear Algebra Package的简称,是一个标准的数值计算软件库。开始时同ARPACK一样用Fortran 77编写,后来又移到了Fortran 90.支持dense 和sparse矩阵,现在它扩展到分布式的PARPACK,ScalaPack.
BLAS,是Basic Linear Algebra Subprograms的缩写。是一些普通线性代数运算的低层子程序集。后来被用做高级数学编程比如: LINPACK, LAPACK, MATLAB,Mathematica, NumPyand R.的库
- BLAS/ARPACK/LAPACK
- 走进BLAS/LAPACK(1)
- 走进BLAS/LAPACK(2)--blas
- BLAS+BLACS+LAPACK+SCALAPACK安装
- BLAS CBLAS LAPACK编译使用
- blas和lapack的安装
- blas和lapack的安装
- 如何在Windows下使用LAPACK和ARPACK
- 【转】如何在Windows下使用LAPACK和ARPACK
- LAPACK 和 BLAS 库使用简介
- BLAS/LAPACK 函数/子程序命名规则
- Using BLAS and LAPACK from C/C++
- scipy lapack/blas not found windows
- 走进blas/lapack(3)--cblas
- 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终于能运行了
- Matlab : 切换中、英文用户界面 (中文变英文)
- Opengl 获取出错
- VC++学习心得(四)
- 线段树扫描线(好)poj2482
- 2-4. BCD解密(10)
- BLAS/ARPACK/LAPACK
- 07-hibernate一对多实例
- POJ2385 Apple Catching 动态规划
- 我们夫妻档博客的起源
- C++ fstream文件流读写文件操作详解
- 最大价值和,多重背包
- ndk jni Android OpenGL es 2.0 课程分享
- shell 运算符
- uva 573(数学)