• 函数库接口标准:BLAS (Basic Linear Algebra Subprograms)和LAPACK (Linear Algebra PACKage)
1979年,Netlib首先用Fortran实现基本的向量乘法、矩阵乘法的函数库(该库没有对运算做过多优化)。后来该代码库对应的接口规范被称为BLAS。
(注:NetLib是一个古老的代码社区,https://en.wikipedia.org/wiki/Netlib

LAPACK也是Netlib用Fortan编写的代码库,实现了高级的线性运算功能,例如矩阵分解,求逆等,底层是调用的BLAS代码库。后来LAPACK也变成一套代码接口标准。

后来,Netlib还在BLAS/LAPACK的基础上,增加了C语言的调用方式,称为CBLAS/CLAPACK

因此,BLAS/LAPACK都有两个含义,一个是Netlib通过Fortran或C实现的代码库,一个是这个两个代码库对应的接口标准

http://www.icl.utk.edu/~mgates3/docs/
 
现在大多数函数库都是基于BLAS/LAPACK接口标准实现
https://en.wikipedia.org/wiki/List_of_numerical_libraries
  • 开源函数库
开源社区对对BLAS/LAPACK的实现,比较著名是 ATLAS(Automatically Tuned Linear Algebra Software)和OpenBLAS。它们都实现了BLAS的全部功能,以及LAPACK的部分功能,并且他们都对计算过程进行了优化。
 
  • 商业函数库

商业公司对BLAS/LAPACK的实现,有Intel的MKL,AMD的ACML。他们对自己的cpu架构,进行了相关计算过程的优化,实现算法效率也很高。

NVIDIA针对其GPU,也推出了cuBLAS,用以在GPU上做矩阵运行。

 
 

Matlab用的是MKL库,可以用version –lapack来查看函数库的版本

Octave 默认用的是OpenBLAS库,  version -blas


附录:Lapack中的函数命名规则
============================================================================
lapack naming: x-yy-zzz, or x-yy-zz
 
x (data type)
------------------------------ 
s float
d double
c float-complex
z double-complex
ds input data is double, internal use float
zc input data is double-complex, internal use float-complex
 
 
Matrix type (yy) | full | packed | RFP | banded | tridiag | generalized problem
================================================================================
general          | ge                    gb       gt        gg
symmetric        | sy     sp       sf    sb       st
Hermitian        | he     hp       hf    hb
positive definite| po     pp       pf    pb       pt
--------------------------------------------------------------------------------
triangular       | tr     tp       tf    tb                 tg
upper Hessenberg | hs                                       hg
trapezoidal      | tz
--------------------------------------------------------------------------------
orthogonal       | or    op
unitary          | un    up
--------------------------------------------------------------------------------
diagonal         |                                di
bidiagonal       |                                bd
 
 
(zzz) algorithm
------------------------------
* Triangular factorization
-trf — factorize: General LU, Cholesky decomposition
-tri — calculate the inverse matrix
 
* Orthogonal factorization
-qp3 — QR factorization, with pivoting
-qrf — QR factorization
 
* Eigenvalue
-ev — all eigenvalues, [eigenvectors]
-evx — expert; also subset
-evd — divide-and-conquer; faster but more memory
-evr — relative robust; fastest and least memory
 
* SVD singular value decomposition
-svd — singular values
 
* Linear system, solve Ax = b
-sv — solve
-sdd — divide-and-conquer; faster but more memory
 
* Linear least squares, minimize ||b?Ax||2
-ls — full rank, rank(A) = min(m,n), uses QR.
-lsy — rank deficient, uses complete orthogonal factorization.
-lsd — rank deficient, uses SVD.
 

科学计算库(BLAS,LAPACK,MKL,EIGEN)的更多相关文章

  1. SciPy - 科学计算库(上)

    SciPy - 科学计算库(上) 一.实验说明 SciPy 库建立在 Numpy 库之上,提供了大量科学算法,主要包括这些主题: 特殊函数 (scipy.special) 积分 (scipy.inte ...

  2. python科学计算库的numpy基础知识,完美抽象多维数组(原创)

    #导入科学计算库 #起别名避免重名 import numpy as np #小技巧:从外往内看==从左往右看 从内往外看==从右往左看 #打印版本号 print(np.version.version) ...

  3. python科学计算库numpy和绘图库PIL的结合,素描图片(原创)

    # 导入绘图库 from PIL import Image #导入科学计算库 import numpy as np #封装一个图像处理工具类 class TestNumpy(object): def ...

  4. numpy科学计算库的基础用法,完美抽象多维数组(原创)

    #起别名避免重名 import numpy as np #小技巧:print从外往内看==shape从左往右看 if __name__ == "__main__": print(' ...

  5. Python科学计算库

    Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...

  6. ubuntu14.04 下安装 gsl 科学计算库

    GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波, ...

  7. windows下如何快速优雅的使用python的科学计算库?

    Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...

  8. Python科学计算库Numpy

    Python科学计算库Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1.简 ...

  9. 科学计算库Numpy基础&提升(理解+重要函数讲解)

    Intro 对于同样的数值计算任务,使用numpy比直接编写python代码实现 优点: 代码更简洁: numpy直接以数组.矩阵为粒度计算并且支持大量的数学函数,而python需要用for循环从底层 ...

随机推荐

  1. js中的局部函数和全局函数的调用

    //局部函数和全局函数的特点 function fc1(){ var name ="chenhao"; function fc2(){ var age = 30; alert(na ...

  2. centsos 7 删除自带jdk安装自定义jdk8

    甲骨文官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 如何清除自带j ...

  3. 9. 图解分析Redis的RDB和AOF两种持久化机制的原理

    1.RDB和AOF两种持久化机制的介绍 2.RDB持久化机制的优点3.RDB持久化机制的缺点4.AOF持久化机制的优点5.AOF持久化机制的缺点6.RDB和AOF到底该如何选择 我们已经知道对于一个企 ...

  4. CCF认证 2019-12-3

    分析 后面的数据,坐标分布太离散,不能用一个二位数组来模拟垃圾分布.因此,考虑用一个数组记录每个垃圾点的位置. 先根据x坐标.再根据y坐标进行排序. 再遍历数组中的每一处垃圾点,判断其是否能建回收站( ...

  5. Oracle的TO_CHAR()格式化数字为百分数的字符串

    TO_CHAR(-0.926903249,'FM999999990.00') || '%' 说明: 1,(点号) :'99.99' : 点号,不要念为"句号",句号是个圆圈,点号只 ...

  6. Update(stage3):第1节 redis组件:8、主从复制架构;9、Sentinel架构

    8.redis的主从复制架构 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(ma ...

  7. Mac终端ls颜色设置

    mac自带的终端是款非常好用的ssh工具,但ls命令下文件与文件夹都是单一的颜色,为了更好区分,作出修改. 终端默认背景颜色为白色,(终端->偏好设置->描述文本),可修改背景颜色与字体大 ...

  8. 在一个不稳定的无效的ViewState净的应用问题。 Erratic Invalid Viewstate issue in a .NET application

    这似乎是很多人都经历了同样的IE8的问题.似乎发生的是,不知何故,IE8(在IE8的渲染模式和IE7兼容模式)将失去4096个字节的HTML文档中该数据缺失导致此异常(通常你看到这一scriptres ...

  9. DOM的一些小总结

    HTML DOM的结构:可以把HTML看成一个个的节点. 节点: HTML DOM对象 --  方法和属性 一些DOM 对象方法 nodeName 属性 nodeValue 属性 nodeType:节 ...

  10. 20 个新的且值得关注的 Vue 开源项目

    译者:前端小智作者:Nastassia Ovchinnikova来源:flatlogic.com 个人专栏 ES6 深入浅出已上线,深入ES6 ,通过案例学习掌握 ES6 中新特性一些使用技巧及原理, ...