技术文章

MATLAB公司LAPACK

克莱夫Moler MathWorks


MATLAB于1970年代后期开始使用交互式计算器LINPACK和EISPACK上方搭建,而后是最先进Fortran子程序库计算矩阵MATLAB所有版本数学核心可达5.3版,使用约12个Fortran子程序C译文LINPACK和EISPACK

LAPACK现代替换LINPACK和EISPACK是一个大型多作者Fortran库,用于数值线性代数新版7月发布,NETLIB提供www.netlib.org/lapack)LAPACK原设计用于超级计算机和其他高端机使用块算法操作矩阵数列高速缓存机上,这些块操作可提供超高速优势LAPACK还提供比前置能力范围更广的一套能力

速度所有这些包都与基本线性代数子程序或BLAS相关ESPACK没有使用BLASLINPACK使用一级BLAS操作时只对一或二向量或矩阵列操作至今MATLAB使用精密编码C和集语言版本BLASLAPACK块算法还使用二级和三级BLAS操作大段全矩阵NETLIB分布LAPACK包括引用BLAS数位硬件操作系统制造商为它们的系统提供高优化机型BLAS版本

终于应该把LAPACK输入MATLAB几乎所有现代机器都有足够的缓存从LAPACK设计中获利数键芯片和计算机商家现在提供优化级1、2和3BLASATLAS新替代产品可用,田纳西大学研究项目AtLAS提供,通过参数化代码片段可自动生成为特定机器优化例程

第一批MATLAB运行半兆字节内存通用igenvaly例程单轮复合算法不是LINPACK或EISPACK开发的,为所有复杂和泛泛igenvaly问题开发LAPACK现有功能大表表示MATLAB空间保存通用代码可用快速集中例程取而代之目前有16条不同的代码路径宜家函数取决于一或二参数、参数实或复杂性、问题对称性以及请求向导

测量LAPACKMATLAB提供速度提高是一个敏感趣味业务小矩阵操作速度快到难以精确测量查看缓存使用模式效果时,宜使用矩阵顺序所有值N级上百原位N级增量执行时间随着IMAGE而增加,因此仔细实验需要数小时运行

MATLAB5.3版目前可见数学工作CD第11版,矩阵计算代码包含在一个库中称为库数论.dlllibmwnumerics.soUNIX多机测量执行时间和速度提高 三种不同版本库 并用颜色编码结果三大版本为:

  • 当前数库与MATLAB5.3版
  • 数字库新基础LAPACK和自机Fortran参考BLAS
  • 优化(red):新数字库LAPACK和BLAS优化

前三大图显示矩阵乘法计时实验结果,用Solaris操作系统运行SunSPARC10面向每一值N级从1到528,我们生成二N级by-N级矩阵并用台阶toc语言时间矩阵产品C=A*B.小值sN级上千次避免时钟解答困难第一个图显示三个版本数字库执行时间当前版本和引用BLAS版本在这种情况下使用无阻算法并以近同速度运行需要近25秒计算528顺序矩阵产物优化版BLAS由Sun提供Sun性能库计算小于3.6秒

win2000_fig3_w.gif

使用矩阵乘法2IMAGE浮点运算获取二图显示的巨型浮点速率求值N级大于256,特大坡速率流参考库从约40下降至约12绿蓝时间图N级=256.) 这是因为计算有三大矩阵,当它们的顺序大于256时,它们就不再适应此计算机缓存缓存大小对红线有一定效果,但并不严重第三个图显示执行时间比加速算法 矩阵在此环境乘法近3分位数匹配缓存 6比7分位数匹配大矩阵

图表异常细节行为仅部分地归因于计时时实验噪声内存访问模式间交互作用 算法 存储矩阵位置 缓存线尺寸替换策略举个例子 值N级可分辨二分权有时会导致低特大坡速率

大矩阵乘法很少确定重应用操作率,因此矩阵乘法本身是一个过分简单化基准矩阵乘法是三级BLAS中最重要的例程 因为它是LAPACK自身复杂块算法核心

下三大图显示高斯消除性能,见函数
Lu(A)上四百兆赫pentiumPC运行Linux再一次N级从1到528取所有值,蓝绿红线对应当前数库,新库参考BLAS和新库优化BLAS三大图显示执行时间、巨型软体和加速Linux使用田纳西大学Greg Henry开发的优化BLAS运行缓存效果不那么戏剧化,因为矩阵只有一个矩阵,矩阵工作顺序随着三角分解过程下降机上近200兆字机优化BLAS大矩阵可预期Lu(A)八倍快速

win2000_fig2_w.gif

下三大图显示性能egenvalue计算eig(A)上233兆赫笔记本操作WindowsNT优化BLAS机器可调自Intel数学内核库和ATLAS项目这两套BLAS性能大致相等egenvalue计算速度提高因子二进制,因为区块算法机会不多这一点当然意义重大,但并不像快速算法那么壮观

win2000_fig1_w.gif

最终图包含一种不同的比较图中仍然显示加速函数矩阵排序,但比较介于两种不同的算法之间,而不是介于两种算法实现基本为一种算法之间。基本工具解决通用矩阵egenvaly问题

Ax=QBx

函数qz(AB).MATLAB5.3只有一个版本QQ算法信息总使用复杂算术并产生复杂结果,即使输入矩阵实值LAPACK为真矩阵提供真QQ算法,所以我们现在可以拥有qz(AB实战)qz(A,B,'complex').图显示这两个计算执行时间之比大真矩阵实算法比复杂算法快四倍大插图N级256表示缓存共振

win2000_fig4_w.gif

LAPACK与机器专用BLAS最终将提供机会使用多线程提高更多速度高端个人计算机和工作站中,有2个或4个处理器共享公共存储器多线程BLAS有可能把所有处理器都用于单矩阵计算而在MATLAB环境中,使用多处理器处理像图形等其它活动可能比较有效我们尚未认真调查这些取舍

可惜的是,MATLAB中最受欢迎特征必须是LAPACK引进的死伤上头浮点数函数保留浮点运算数,不再可行浮动点操作大都以优化BLAS完成,不保留浮点计数移动点运算不再是执行速度的主导因素内存引用和缓存用法非常重要

LAPACK数字库将是MATLAB下一期大发布的一部分

数字库多台计算机可用安装机上时,应看到计算大矩阵加速至少二分八分

发布2000