提升R语言的矩阵计算速度
前言
R语言为人诟病的地方很多,运行速度太慢是很突出的一点。这里介绍一种野路子的方法。
本文转载改写自:https://www.bilibili.com/read/cv12524943
一、OpenBLAS
OpenBLAS是开源的矩阵运算库,性能可以比肩Intel的MKL,介绍看这:https://www.openblas.net/
R默认用的BLAS库是万能不更新的BLAS,具体介绍看这:https://www.netlib.org/blas/
更换掉RBlas.dll可以秒提升速度几倍,特别是对于万行以上记录的回归、分类问题,原版Rblas的性能让人捉急,动不动半小时甚至半天的,换了openblas,几分钟搞定。
这方法十年前大家都知道,只是以前需要自己动手编译openblas,过于麻烦,现如今张大神已经在github上提供预先编译好的openblas.dll,经测试,只要复制到R\bin\x64\文件夹中,把原先的Rblas.dll改个别的名字,把openblas.dll改名成Rblas.dll即可。
运行R.exe如果不报错,那就大功告成了。
二、使用步骤
1.下载OpenBLAS-0.3.20-x64.zip
以前需要自己动手编译openblas,过于麻烦,现如今张大神已经在github上提供预先编译好的openblas.dll,经测试,只要复制到R\bin\x64\文件夹中,把原先的Rblas.dll改个别的名字,把openblas.dll改名成Rblas.dll即可。
下载地址:
https://github.com/xianyi/OpenBLAS/releases
https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.20
https://github.com/xianyi/OpenBLAS/releases/download/v0.3.20/OpenBLAS-0.3.20-x64.zip
下载慢的话用油猴脚本github加速,可以bing搜索教程。
通常windows就下载第一个OpenBLAS-0.3.17-x64.zip 然后解压缩就行,里面有编译好的dll。
2.替换系统文件
解压OpenBLAS-0.3.20-x64.zip,找到 解压文件下 \bin\libopenblas.dll,将libopenblas.dll重命名为Rblas.dll ,然后替换掉R里面的文件(记得备份),比如R目录是C:\Program Files\R\R-4.1.0\bin\x64里面。
3.测试
x <- matrix(rnorm(9000000),3000,3000)
system.time(tmp <- x %*% x)
这是Rblas的性能
user system elapsed
19.29 0.00 19.41
这是替换完openblas后的性能
user system elapsed
2.35 0.08 0.68
两者差异28倍