Microsoft+R:Microsoft R Open (MRO)安装和多核运作
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,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)安装和多核运作的更多相关文章
- Microsoft Visual Studio Web 创作组件安装失败的解决方法
在网上查一下说是Office2007的问题.我把Office2007卸载了还是不行. 然后用Windows Install Clean Up工具清理,还是不行. 郁闷了.然后在安装包中的下面路径下找到 ...
- 4步解决“Microsoft Office Professional Plus 2013在安装过程中出错”
公司新搭建了AD域,公司内使用了1年多的电脑,现在要加入域,加域过程问题错综复杂. 其中一台电脑上,反应说Excel经常卡住,严重影响使用,所以考虑重装office2013.在控制面板卸载了: 卸载完 ...
- Ubuntu安装R及R包
安装R $sudo apt-get update $sudo apt-get install r-base $sudo apt-get install r-base-dev 安装一些可能的依赖包 $s ...
- mac远程桌面Microsoft Remote Desktop for Mac的安装与使用
mac远程桌面Microsoft Remote Desktop for Mac的安装与使用 学习了:https://blog.csdn.net/ytangdigl/article/details/78 ...
- conda清华源 pip 清华源ubuntu 清华镜像 R代理以及包的安装
vim ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https:// ...
- R语言入门1:安装R和RStudio
R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...
- Linux环境下R和R包安装及其管理
前言 R对windows使用很友好,对Linux来说充满了敌意.小数据可以在windows下交互操作,效果很好很棒.可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux ...
- R(四): R开发实例-map分布图
前几章对R语言的运行原理.基本语法.数据类型.环境部署等基础知识作了简单介绍,本节将结合具体案例进行验证测试. 案例场景:从互联网下载全国三甲医院数据,以地图作为背景,展现各医院在地图上的分布图.全国 ...
- R(一): R基础知识
R 是一门拥有统计分析及作图功能的免费软件,主要用于数学建模.统计计算.数据处理.可视化等方向.据 IEEE Spectrum发布的2016年编程语言前10位排名来看,R语言由2015年排名第6位上升 ...
随机推荐
- How to get started with GIT and work with GIT Remote Repo
https://www.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html#zz-7. 1. Introduction GIT is a ...
- 如何在eclipse中配置反编译工具JadClipse
Q:为什么有必要在开发环境中配置反编译工具呢? A: 当运行引用了第三方jar包项目时,突然报出了jar包中的某个类的某一行出现异常.我们想看一下这个class文件的代码时,经常出现了如下图所示的场 ...
- java之过滤器Filter (应用场景)
filter在开发中的常见应用: * 1.filter可以目标资源执行之前,进行权限检查,检查用户有无权限,如有权限则放行,如没有,则拒绝访问 * 2.filter可以放行之前,对re ...
- iOS-strong和copy【详细解读】
strong和copy是常用到的修饰符,那么什么时候用strong,什么时候用copy,先上一段代码再说(以下代码直接在ViewController中写): 先定义两个数组 ///strong @pr ...
- k短路模板 POJ2449
采用A*算法的k短路模板 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- BZOJ 1998: [Hnoi2010]Fsk物品调度 [置换群 并查集]
传送门 流水线上有n个位置,从0到n-1依次编号,一开始0号位置空,其它的位置i上有编号为i的盒子.Lostmonkey要按照以下规则重新排列这些盒子. 规则由5个数描述,q,p,m,d,s,s表示空 ...
- C++ cin.get及getline的用法
1.cin.get() 从指定的输入流中提取一个字符,函数的返回值就是这个字符.文件结束符会返回EOF,一般以-1代表EOF. #include<iostream> using names ...
- 如何解决JavaScript中0.1+0.2不等于0.3
console.log(0.1+0.2===0.3)// true or false?? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!= ...
- 二维码开源库ZBar-吐槽篇
前不久在网上看到一篇文章<QR-Decoder-OV5640 二维码识别> ,是某开发板的教程.记得对应的开发板以前购买过,当初只是为了看OV5640的JPG的输出效果,结果由于公司奇葩的 ...
- unity爬坑记录
这里记一下平时遇到的unity bug: unity2017最好不要在prefab上面修改它上面的组件参数 最好是拖放到场景之后修改场景内的物体组件参数 完事了apply一下删掉 不这样做的话 可能u ...