MRO
MRO(Microsoft R Open),主要是用于对向量/矩阵运算进行大幅度的提升。R一般被设计成一直只能使用一个线程(处理器),即使在今天,R也以这种方式工作,除非与多线程BLAS/LAPACK库相连接。而MRO附带MKL库,提供了R使用的BLAS和LAPACK库函数,这个库把定制的RevoUtilsMath包安装到默认搜索路径,从而提高矩阵运算。
MRO官网:Welcome to MRAN . MRAN (microsoft.com)
值得说明的是,到2021/12/27为止,MRO的版本还停滞在2020/9月版本----MRO版本:4.0.2;R版本:4.0.2。MRO官网也好像已经暂停维护了。。。
而对MRO的搭建,目前有三种方法:
- 直接按照官网的流程:Root一键安装;
- Conda安装,但Conda版本的MRO是3.6.1;
- 手动编译;
非Root权限,又追求较新版本的R的话,只能手动编译,网上的教程很多,比较靠谱的是:
Centos 下非 Root 安装 Microsoft R Open (qq.com)
关于安装过程中由于缺少的部分相关库而出现报错的问题,可以从其它文件中连接到XXXX/4.0.2/stage/Linux/bin/x64中,例如:缺少libiomp5.so
locate libiomp5.so
/anaconda3/envs/orthofinder/lib/libiomp5.so
/anaconda3/envs/qiime1/lib/libiomp5.so
/anaconda3/lib/libiomp5.so
anaconda3/pkgs/intel-openmp-2019.4-243/lib/libiomp5.so
....
ln -s /anaconda3/envs/orthofinder/lib/libiomp5.so XXXX/4.0.2/stage/Linux/bin/x64
#当运行R出现,则说明安装成功:
Microsoft R Open 4.0.2
The enhanced R distribution from Microsoft
Microsoft packages Copyright (C) 2020 Microsoft Corporation
Using the Intel MKL for parallel mathematical computing (using 36 cores).
Default CRAN mirror snapshot taken on 2020-07-16.
See: https://mran.microsoft.com/.
#MRO查看线程数:
getMKLthreads()
设置线程数:
setMKLthreads(<value>)
MRO的效果:
在同版本下(R:4.0.2),进行矩阵运算:
# 启动R
~ R
# 方阵相乘
> x <- matrix(1:(3000 * 3000), 3000, 3000)
# 计算普通4.0.2版本R的耗时
> system.time(tmp <- x %*% x)
user system elapsed
45.337 0.488 77.455
#计算MRO4.0.2版本的耗时
> system.time(tmp <- x %*% x)
user system elapsed
17.174 1.418 1.770
###MRO的矩阵预算能力高出普通版本的2倍以上
值得注意的是,当升级R版本至4.1.2时,同样的运算,高阶版本的R运行更快。
> system.time(tmp <- x%*% x)
user system elapsed
3.114 4.344 0.696
在同样的运算上,MRO要比普通R运用更多线程数:
3EEBAB4492B64B20AD6345DAAACBEF7E.jpg
重点来了!!关于在MRO中R包的安装。
MRO自带R的library中的packages大部分是老版本,这对于你安装新的Packages非常不友好,甚至会引起安装报错,比如在安装Seurat 4.0.3过程中,出现的错误无非就几种:
- 缺失依赖包==>安装依赖包
- 依赖包版本错误==>安装对应版本的packages
- 依赖包编译失败==>指定较老版本的packages(当然需要与服务器中GCC版本对应);Conda安装。
Packages安装的几种方法:
方法1:Devtools
require(devtools)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")
方法2:源码安装
packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
方法3:CMD安装
###需要依赖Rtools软件
wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz
R CMD INSTALL ggplot2_0.9.1.tar.gz
或:
install.packages("libs/xxxx.tgz",repo=NULL,type="source")
方法4:conda安装(r-packages)
###conda安装,这是没办法的办法,一键解决环境依赖问题,简直强到不行。
##需要注意的是需要将conda安装的R包移到本地R的library上,
##一般来说依赖和编译问题都能解决,但还是主推使用上面三种方法安装。
例如:
mamba install -c conda-forge polyclip==1.10.0