每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

本文转载于公众号大猫的R语言课堂,公众号作者使用这个MRO+Visual Studio 2015来运行。

文中介绍了下载方法以及设置多线程。

传统的RGui是单线程运行,此时microsoft收购之后实现了多线程,在高效上跨出了一大步。


同时,笔者在使用的时候有一个非常大的困惑:

里面的函数包是不是跟原来的一样?

——从包的数量上来看,应该是一致的。但是不再是原来的R的社区。现在是MRAN社区。

链接是:https://mran.revolutionanalytics.com/packages/

——————————————————————————————————————————————————————————————

写在前面上次关于MRO的文章推送之后,许多小伙伴表示对于Microsoft R这个增强版本的R相当有兴趣,希望大猫快点更新,所以大猫加班加点(最近要投Paper,时间有点紧啊),经过若干小时的奋战,新一期的大猫课堂又和大家见面啦!
性能测试(一):甩了社区版R几条街话说上回提到RevolutionAnalytics和Microsoft携手后推出了免费版的Microsoft R Open (MRO)以及企业版的Microsoft R Server (MRS)。依靠着BLAS/LAPACK库以及英特尔的多线程鸡血大补丸,微软宣称和社区版CRAN R相比,MRO在矩阵运算上的效率可谓有着恐怖的提高。然而口说无凭,为了服众,微软公布了基准测试成绩(Performance Benchmark):

基准测试代码可以从github下载,有兴趣的小伙伴们请戳:https://github.com/andrie/version.compare
整个基准测试分成了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,性能也不会比单核有多大提高!
为了更加直观反映性能提高,微软在下图中把CRAN R的成绩标准化为1,这样“27.41”就表示性能是基准的27.41倍:

注:MRO的性能提高主要体现在矩阵运算与多线程上。如果你的代码/包本身几乎不包含任何矩阵运算,那么使用MRO并不会带来太多性能上的提高。
性能测试(二):SAS也不在话下!在被Microsoft收购之前,初生牛犊不怕虎的RevolutionAnalytics还做过一件相当嚣张的事:为了宣传他们的企业版R,RevolutionAnalytics发布了一本白皮书,书名相当直言不讳,叫做Revolution R Enterprise: Faster than SAS。在白皮书中,RA团队宣称他们“想方设法保证了测试的公平”。首先,他们特地设计了一个“最贴近商业应用环境”的基准测试。不仅如此,为了尽可能消除争议,他们特地邀请了一个企业SAS顾问来帮助他们优化作为比较的SAS代码,使之最大可能体现SAS的语法优势。最后,他们还大费周章部署了分布式SAS Grid,使之也能使用多线程(在SAS中部署分布式要比R中复杂得多,大猫曾经有尝试,最终放弃……)。一切准备妥当,RA公布了一个难以置信的结果:

ScaleR ran the analysis tasks 42 times FASTER than SAS!!
这个结果自然令R阵营欢呼雀跃,但也难免引起了广泛的争议。大猫也没有仔细读完白皮书,故暂时不好发表意见。不过作为一个7年的SAS使用者,大猫在这里中肯地说:即使速度的确不如R,但是SAS在稳定性上仍旧是R无法企及的。一个很常见的例子是:在SAS中,无论你的程序陷入了怎样的死循环,按一个terminate键立马就能退出,而且程序从来不崩溃;但是在R中,一旦陷入死循环或者假死状态,想要退出只能重启R进程,而且working space里的数据需要重新加载!这是相当令人痛苦的。打个比方,SAS就好像AK47,R就好比M4A1,后者先进,但是前者——耐操啊!

白皮书中对R vs. SAS大战的总结。想要更多了解这场R和SAS的大战,请访问以下链接:http://www.revolutionanalytics.com/sites/default/files/revolution-analytics-sas-benchmark-whitepaper-mar2014.pdf

如何安装说了那么多MRO的引人入胜之处,小伙伴们一定希望马上体验。其实MRO的安装非常简单:
1)首先,进入MRO下载页面:https://mran.revolutionanalytics.com/download/
2)在下载页面中,我们能够看到针对多个系统的MRO版本下载,从Windows、MacOS一直到Ubantu、Red Hat等各种Linux发行版。因为大猫用的是Win10,所以直接点击Windows-Microsoft R Open这个链接就可以了。

注:只有64bit系统才能运行MRO!
3)最重要的一步来啦,接下来我们就要安装MRO的灵魂——来自英特尔的鸡血多线程补丁MKL。我们只要点击对应MRO版本的MKL进行下载即可。注意,需要先安装MRO再安装MKL库,否则会安装失败。

4)大功告成!这时启动MRO,会在启动界面中发现MRO已经自动侦测到你的多核CPU并且自动设置线程数:

由于大猫用的是Surface Pro 4,所以在这里MRO显示自动开启了双线程。
当然,你也可以手动查看并且设置所用的核心数。其中,查看使用核心数的的语句是getMKLthreads(),设置核心数的语句是setMKLthreads(<value>)。例如:


本期总结本期大猫带领大家领略了MRO在矩阵运算上相对于CRAN R的巨大提高,同时还介绍了MRO的安装方法。但是,除了多线程运算,MRO还有其他杀手锏!比如TimeMachine——可以把你加载的包返回到任意时间以及任意版本。此外,俗话说好马配好鞍,在安装了MRO之后,你需要一个能最大程度上发挥MRO潜力的开发工具——那就是同样来自于Microsoft、这个星球上当之无愧的最强大的集成开发环境——Visual Studio。在这里大猫先放两张自己所用的开发环境截图,在下一期中,大猫带你继续领略Microsoft R的无限魅力!

Microsoft R Open + R Tools for Visual Studio开发环境截图

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

Microsoft+R:Microsoft R Open (MRO)安装和多核运作的更多相关文章

  1. Microsoft Visual Studio Web 创作组件安装失败的解决方法

    在网上查一下说是Office2007的问题.我把Office2007卸载了还是不行. 然后用Windows Install Clean Up工具清理,还是不行. 郁闷了.然后在安装包中的下面路径下找到 ...

  2. 4步解决“Microsoft Office Professional Plus 2013在安装过程中出错”

    公司新搭建了AD域,公司内使用了1年多的电脑,现在要加入域,加域过程问题错综复杂. 其中一台电脑上,反应说Excel经常卡住,严重影响使用,所以考虑重装office2013.在控制面板卸载了: 卸载完 ...

  3. Ubuntu安装R及R包

    安装R $sudo apt-get update $sudo apt-get install r-base $sudo apt-get install r-base-dev 安装一些可能的依赖包 $s ...

  4. mac远程桌面Microsoft Remote Desktop for Mac的安装与使用

    mac远程桌面Microsoft Remote Desktop for Mac的安装与使用 学习了:https://blog.csdn.net/ytangdigl/article/details/78 ...

  5. conda清华源 pip 清华源ubuntu 清华镜像 R代理以及包的安装

    vim     ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https:// ...

  6. R语言入门1:安装R和RStudio

    R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...

  7. Linux环境下R和R包安装及其管理

    前言 R对windows使用很友好,对Linux来说充满了敌意.小数据可以在windows下交互操作,效果很好很棒.可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux ...

  8. R(四): R开发实例-map分布图

    前几章对R语言的运行原理.基本语法.数据类型.环境部署等基础知识作了简单介绍,本节将结合具体案例进行验证测试. 案例场景:从互联网下载全国三甲医院数据,以地图作为背景,展现各医院在地图上的分布图.全国 ...

  9. R(一): R基础知识

    R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...

随机推荐

  1. iOS简单动画效果:闪烁、移动、旋转、路径、组合

    #define kDegreesToRadian(x) (M_PI * (x) / 180.0) #define kRadianToDegrees(radian) (radian*180.0)/(M_ ...

  2. Eclipse导入项目文件夹

    Eclipse项目导入出现感叹号解决方法 出现这样的情况怎么办 右击项目名-Bulid path -configure Bulid path 选择Libraries-Remove(移去错的)-Add ...

  3. Css3中的 calc()使用

    http://www.w3cplus.com/css3/how-to-use-css3-calc-function.html

  4. bzoj 2208 [Jsoi2010]连通数

    2208: [Jsoi2010]连通数 Time Limit: 20 Sec  Memory Limit: 512 MB Description Input 输入数据第一行是图顶点的数量,一个正整数N ...

  5. JavaScript 数值Number类型详解

    Number 问题 如果下面的问题你都能回答对了吗? 0.1 + 0.2 == 0.3 成立吗? .e-5 表示多少? 怎么表示8进制? 怎么转换进制? 如何将字符串转换成数值或整数?反过来呢?十六进 ...

  6. vc++调用web服务传输文件

    bool webService::UploadFile(LPWSTR appKey, LPWSTR fileName, const int len, unsigned char * buff) { t ...

  7. Call to undefined function mysql_connect()错误原因

    从PHP5.0开始就不推荐使用mysql_connect()函数,到了php7.0则直接废弃了该函数,替代的函数是: mysqli_connect();

  8. Cypher查询语言--Neo4j-WHERE(三)

    目录 Where Boolean 操作类型 节点属性上的过滤 正则表达式 转义正则表达式 不分大小些正则表达式 关系类型上的过滤 属性存在性 如果缺失属性默认为true 如果缺失属性默认为false ...

  9. ABP官方文档翻译 5.3 OData集成

    OData集成 介绍 安装 安装Nuget包 设置模块依赖 配置实体 创建控制器 配置 示例 获取实体列表 Request Response 获取单个实体 Request Response 使用导航属 ...

  10. 洛谷 [P2764]最小路径覆盖问题

    二分图应用模版 #include <iostream> #include <cstdio> #include <algorithm> #include <cs ...