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

简介

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

03. 用microsoft R 随时多线程 - 图1

“整个基准测试分成了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,性能也不会比单核有多大提高!”

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

03. 用microsoft R 随时多线程 - 图2

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

使用

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

03. 用microsoft R 随时多线程 - 图3

设置核心数

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

  1. getMKLthreads() # 查看线程
  2. setMKLthreads(<value>) # 配置线程

镜像设置

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

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

  1. # start with welcome
  2. .First <- function(){
  3. message("Hello Peng!")
  4. message(paste0("Welcome at ", date()))
  5. # 配置install 命令使用的线程
  6. n <- parallel::detectCores()
  7. options(Ncpus = n-1)
  8. n2 <- getOption("Ncpus", 1L)
  9. message(paste0("We will use ", n2, " cores for installing.\n"))
  10. }
  11. # 配置镜像
  12. r <- getOption( "repos" );# set CRAN mirror for users in China
  13. r[ "CRAN" ] <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"; # CRAN的镜像地址
  14. options( repos = r )
  15. BioC <- getOption( "BioC_mirror" ); # set bioconductor mirror for users in China
  16. BioC[ "BioC_mirror" ] <- "https://mirrors.ustc.edu.cn/bioc/"; # bioconductor的镜像地址
  17. options( BioC_mirror = BioC )
  18. rm(r, BioC)
  19. # finish with goodbye
  20. .Last <- function(){
  21. cat("\n Goodbye,", date(), "\n")
  22. }

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

  1. getOption( "repos" )

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

  1. R version 4.0.2 (2020-06-22) -- "Taking Off Again"
  2. Copyright (C) 2020 The R Foundation for Statistical Computing
  3. Platform: x86_64-w64-mingw32/x64 (64-bit)
  4. R是自由软件,不带任何担保。
  5. 在某些条件下你可以将其自由散布。
  6. 'license()''licence()'来看散布的详细条件。
  7. R是个合作计划,有许多人为之做出了贡献.
  8. 'contributors()'来看合作者的详细情况
  9. 'citation()'会告诉你如何在出版物中正确地引用RR程序包。
  10. 'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
  11. 'help.start()'通过HTML浏览器来看帮助文件。
  12. 'q()'退出R.
  13. Microsoft R Open 4.0.2
  14. The enhanced R distribution from Microsoft
  15. Microsoft packages Copyright (C) 2020 Microsoft Corporation
  16. Using the Intel MKL for parallel mathematical computing (using 4 cores).
  17. Default CRAN mirror snapshot taken on 2020-07-16.
  18. See: https://mran.microsoft.com/.

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