相关文章推荐
越狱的大脸猫  ·  How do I extract a ...·  1 年前    · 
笑点低的苦瓜  ·  mongodb 复制表-掘金·  2 年前    · 
R的多线程加速方案(MRO与OpenBlas)

R的多线程加速方案(MRO与OpenBlas)

1 年前 · 来自专栏 进化基因组学

​前言

鉴于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 ( 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’