前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >49-R编程(十一:用microsoft R 随时多线程)

49-R编程(十一:用microsoft R 随时多线程)

作者头像
北野茶缸子
发布2021-12-17 09:12:34
7370
发布2021-12-17 09:12:34
举报
文章被收录于专栏:北野茶缸子的专栏

参见:https://cloud.tencent.com/developer/article/1728636

简介

前段时间看群里的师兄发了一张图:

“整个基准测试分成了6大部分,分别为矩阵相乘、Cholesky分解、QR分解、奇异值分解、主成分分析、线性判别分析。这六大任务覆盖了常见的所有矩阵密集型运算,具有相当的代表性。那MRO的成绩如何?以矩阵相乘为例,我们发现,CRAN R在单线程下需要运行140.63秒,而同样在单线程下,MRO只需要14.11秒,速度是原来的近10倍!然而这里的提高仅仅是由BLAS/LAPCAK库所带来的,在多线程下面MRO有着怎样的表现呢?上面的表格告诉我们,在4线程(大多数的超极本都有2核2线程或者2核4线程)以及8线程(大多数台式PC的情况)的条件下,MRO只花了3.27秒以及1.89秒就跑完测试,性能分别是CRAN R的43倍及74倍!Intel大补丸见效之快、药效之好实在是令人咋舌!在其他项目的测试中,MRO相比CRAN R都有着2x~50x的提高。可能有小伙伴会问,那CRAN R在多线程形况下性能有多少提高呢?大猫提醒大家,CRAN R执行命令是单线程的,因此哪怕在多核CPU上跑CRAN R,性能也不会比单核有多大提高!”

是骡子是马,咱拉出来溜溜:

安装非常简单,和一般的R 一样,只不过其没有提供mac os 版本(太损啦)。

使用

使用上和一般的R 感觉差不多,但上来就很爽:

设置核心数

两个函数,和parallel 包中的操作非常像:

代码语言:javascript
复制
getMKLthreads() # 查看线程
setMKLthreads(<value>) # 配置线程

镜像设置

发现和R open 在r studio 中设置镜像不同,mran R 的设置不起作用。

这里可以参考我的设置,直接在Rprofile 中配置即可:file.edit(file.path("~", ".Rprofile")) 进入文件

代码语言:javascript
复制
# start with welcome
.First <- function(){
  message("Hello Peng!")
  message(paste0("Welcome at ", date()))
  # 配置install 命令使用的线程
  n <- parallel::detectCores()
  options(Ncpus = n-1)
  n2 <- getOption("Ncpus", 1L)
  message(paste0("We will use ", n2, " cores for installing.\n"))
}


# 配置镜像
r <- getOption( "repos" );# set CRAN mirror for users in China
r[ "CRAN" ] <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"; # CRAN的镜像地址
options( repos = r )

BioC <- getOption( "BioC_mirror" ); # set bioconductor mirror for users in China
BioC[ "BioC_mirror" ] <- "https://mirrors.ustc.edu.cn/bioc/"; # bioconductor的镜像地址
options( BioC_mirror = BioC )

rm(r, BioC)

# finish with goodbye
.Last <- function(){
  cat("\n Goodbye,", date(), "\n")
}

这样两个主要安装R 的来源都配置好了镜像了:

代码语言:javascript
复制
getOption( "repos" )

因为mran 其实用的R 包也是来自cran 的镜像,所以也没啥问题:

代码语言:javascript
复制
R version 4.0.2 (2020-06-22) -- "Taking Off Again"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()'或'licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.
用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出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 4 cores).

Default CRAN mirror snapshot taken on 2020-07-16.
See: https://mran.microsoft.com/.

只不过mran 毕竟是cran 的升级,因此版本更新慢了一点,R 都4.0.5 它还是0.2 版本。(其实影响也不大的)

比较mran 与cran

这里直接参考:https://zhuanlan.zhihu.com/p/70432486

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 使用
    • 设置核心数
      • 镜像设置
        • 比较mran 与cran
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档