BLAS和LAPACK是什么?
BLAS和LAPACK是专门为线性代数开发的工具库。
BLAS英文全称Basic Linear Algebra Subprograms,共有三个层次的计算
- 向量与向量之间的计算,比如向量的加,减,点乘
- 向量与矩阵之间的计算,比如乘法运算,一阶矩阵和二阶矩阵的更新
- 矩阵与矩阵之间的计算,比如矩阵相乘,K阶更新
LAPACK英文全称Linear Algebra Package,是一个以Fortran 编程语言写成,用于数值计算的函式集。是建立在BLAS之上的更复杂的计算程序,可用于解多元线性方程式,计算特征向量,奇异值分解等问题。
参考:走进BLAS/LAPACK
MKL是什么?
intel MKL,英文全称是intel Math Kernel Library,是英特尔核心数学库,提供高度优化和大量线程化处理的数学例子。
提供C、Fortran和Fortran 95的支持,但仅支持intel自家旗下的CPU。
核心数学函数包括BLAS、LAPACK、ScaLAPACK,稀疏矩阵解算器,FFT,矢量数学及其它函数。
支持主流的操作系统(Windows,Linux,Mac OS等),与主流的开发工具(VS、Eclipse、Xcode、GCC等)集成。
内置并行处理机制,在多核多处理器上自动获取出色的扩充性能。所有的MKL函数都是线程安全的。同时提供非线性程化顺序行MKL。
参考:
MKL相关文档链接
ScaLAPACK,Scalable LAPACK
PBLAS,Parallel Basic Linear Algebra Subprograms可并行基本代数子程序
##FFT和PDE是什么?
Fast Fourier Transform 快速傅利叶变换
PDE,Partial Differential Equations 偏微分方程
静态库和动态库
静态库:静态库是一些目标文件的集合,后缀为.o的文件,通过ar工具打包而成,命名为libxxx.a,xxx为给定的静态库文件名,例如libmkl_lapack95_lp64.a。在创建可执行程序的过程中,静态库同时被链接到程序代码,被主程序调用的函数目标文件连同主程序组合成单一的可 执行程序。静态库只在程序链接时起作用,最终执行程序脱离静态库运行。
动态库:shared library,后缀为.so,通过编译器生成,在不同平台有不同的生成方法。使用动态库创建执行程序,分为两个阶段,链接阶段,以及运行阶段。dlopen,打开动态链接库;dlsym,取函数执行地址;dlclose,关闭动态链接库;dlerror,动态库错误函数。
参考:博客
GotoBlas是什么?
GotoBlas是Kazushige Goto在TACC(Texas Advanced Computing Center)开发的一个数学库。在科学计算领域,GotoBLAS和GotoBLAS2是BLAS的开源完善博客参考
GotoBlas2的下载网址:
www.tacc.utexas.edu/tacc-projects/gotoblas2
ATLAS是什么?
ATLAS英文全称是Automatically Tuned Linear Algebra Software,是线性代数软件库,实现了BLAS的全部功能以及LAPACK的部分功能,并且对计算过程进行了优化。
参考:wiki百科 博客