R的多线程加速方案(MRO与OpenBlas)
前言
鉴于conda上的MRO一直停滞在3.5的版本,即使使用也会报curl的SSL过期错误,所以一个非root用户如何在集群上自行解决R多线程的问题逐渐变成了某个rMVP用户(特指我)的重要研究课题。
正好在GitHub上看到某个帖子,Improved instructions for installation from source on Linux? (or alternately a non-root installation script) · Issue #55 · microsoft/microsoft-r-open ( http:// github.com )
毕竟有过一次从R Open源码编译的尝试,当时编译完主程序后,发现其实还是一个普通的R版本,并没有什么变化,但由于当时暂时用不到R Open,纯属折腾着玩,赶课题就没再继续搞了。直到看到他这个帖子我才恍然大悟。虽然是3.4的R Open,但其实道理应该都是一样的,看了他通篇的编译过程,不难理解,其实所谓的Microsoft R Open,应该就是在原生R的基础上多增加了几个定制化的包而已。
手工打磨版MRO(不完美版)
下载MRO源码
# 选择最新版的MRO源码
https://github.com/microsoft/microsoft-r-open/releases/tag/MRO-4.0.2
安装R 4.0.2
然后就是把基础的R环境搭建好,我就没那么费事了,直接conda一顿梭哈,懒得去配置各类环境问题。
mamba create -n mro -c conda-forge -c bioconda r-base=4.0.2
安装Microsoft R Open 特有包
这些需要安装的包其实就在解压后的mro文件夹的additionalPackages里面
tar xvf microsoft-r-open-MRO-4.0.2.tar.gz
cd microsoft-r-open-MRO-3.4.3/additionalPackages
需要注意的是,装包存在一定的顺序,不然会提示部分包还没装好,不能安装改包,基本的顺序如下
所有小写字母开头的可以随意装,可以利用R CMD INSTALL装,也可以利用install.package装,具体看个人习惯,其中deployr-rserve是一个空的文件夹,大概率是已经被抛弃的一个包了,而patches也不是一个R包,是unix自带的一个软件,curl也不需要管。
将所有的小写字母开头的包装好以后,就可以开始装大写字母开头的了(
这些包没办法用install.packages直接安装
),其中RevoIQQ是需要倒数第二个装的,其余的包之间无依赖关系,直接装就好了,但这里一般会碰到一个问题,即RODBC这个包可能会报
configure: error: "ODBC headers sql.h and sqlext.h not found" ERROR: configuration failed for package ‘RODBC’