R中矩阵运算速度测试

本文对比了ATLAS、Intel MKL及GotoBLAS三种版本的BLAS库在矩阵运算上的性能表现,包括crossproduct、QR分解、奇异值分解及特征值分解等运算的速度测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题取通俗一点,其实是BLAS运算速度的测试,BLAS是Basic Linear Algebra Subprograms的缩写。数学软件中矩阵运算的功能,包括R, Matlab, Octave等,都是通过BLAS以及基于它的LAPACK完成的。不同版本的BLAS对运算速度影响很大。
常见的BLAS版本包括ATLAS, Intel MKL和GotoBLAS等等,我这里比较的就这三个。Ubuntu默认的是ATLAS,GPL开源的。同时Ubuntu中有Revolution捐献的Intel MKL,这个是Intel收了钱的。另外神人後藤和茂写的GotoBLAS最近用BSD协议开源了,我自己编译了一份。
我的操作系统是Ubuntu 10.04,硬件是Intel Core i7-740QM + 2*DDR3-1333-4GB(显摆中^O^)。用rnorm随机生成了10个2000x2000的矩阵后,进行crossproduct, qr, svd, eigen四种运算。下面结果中的数字表示在这10个矩阵上完成运算的时间(秒数):

ATLAS 3.6.0
Crossproduct: 12.133
QR Decomposition: 69.038
Singular Value Decomposition: 78.556
Spectral Decomposition: 176.861

Intel MKL 10.2
Crossproduct: 7.362
QR Decomposition: 45.631
Singular Value Decomposition: 78.608
Spectral Decomposition: 165.773

GotoBLAS2 1.13
Crossproduct: 3.861
QR Decomposition: 72.792
Singular Value Decomposition: 82.627
Spectral Decomposition: 205.98

我的CPU是四核八线程的。观察发现三种BLAS在进行QR分解的时候都没有用到多核,而且ATLAS在Crossproduct(矩阵乘法)也没有用到多核。其它都有四核四线程在同时运行。

我的结果与别人报告的结果(http://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.pdf )并不一致,GotoBLAS并没有传说中的那么好。可能是因为我的矩阵规模还不够大的缘故。

由于我最近主要用svd和eigen算diffusion map,矩阵规模也就在几千,决定还是选用Intel MKL作为我机器上的BLAS。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值