Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R开发环境:如何做到既酷炫又高效?(一)

R开发环境:如何做到既酷炫又高效?(一)

作者头像
用户7652506
发布于 2020-10-23 08:26:29
发布于 2020-10-23 08:26:29
6700
举报

在前面

有读者给大猫留言,说看你公众号文章中的界面截图,似乎和我用的R不一样?的确如此,大猫用的IDE集成开发环境)既不是R自带的图形界面RGui,也不是常见的RStudio,而是微软家的Visual Studio,甚至大猫所用的R版本也不是普通的CRAN社区版,而是带有多线程运行库Microsoft R Open。这两者结合在一起可以让你完成以前难以想象的事:团队协同、矩阵运算效率提高300%、灵活地自定义用户界面,多种语言在同一框架内开发、Azure云以及SQL Server数据库无缝结合……是不是听着有点小激动?那就继续往下读吧!

强版R:Microsoft R Open (MRO)

所有使用R的小伙伴肯定都知道CRAN(Comprehensive R Archive Network)。作为R的官方社区,它不仅承担了所有的R包的发行与下载,更重要的是,它承担了R本身的更新与发布。除了非常极少数情况,我们使用的R版本都来自CRAN。

那是不是CRAN版本的R就是最好的呢?非也。可能有一些小伙伴知道,R在设计之初采用的是单线程处理的架构,但是现在几乎所有的电脑都用着多核处理器,因此R在很多时候不能充分调动CPU资源。虽然后来人们开发了很多用于并行处理的包,但是这些包不是效果差强人意,就是使用起来太麻烦。那还有其他更加简单有效提高R性能的方法吗?大猫先在这里给出一个提示:R是开源的。

是的,一些聪明人就想:既然R是开源的,与其抱怨CRAN R的效率太低,不如我自己修改源代码整一个多线程版的R嘛!于是,Microsoft R Open的前身诞生了:Revolution R Open(RRO)。

R

RO提高性能的原理

RRO的思路是这样的:要提高性能,一种方法就是借助第三方数值计算库。我们都知道,小时候如果没有背诵九九乘法表,那么我们计算乘法的时候就需要化把它拆分为加法,这样一来效率就非常低。CRAN R就好比那个不懂九九乘法表的小孩,而“库”(library)就好比计算中的九九乘法表,每当遇到某些特定问题的计算,R就不需要死算,直接去库里找结果就行了。这样一来,计算效率也就突飞猛进。RRO所使用的两个库分别叫做BLAS和LAPACK,其中LAPACK是BLAS的超集,有兴趣的小伙伴们可以网上阅读更多介绍。

但RRO的野心不止如此,“现在只相当于在计算中抄了捷径,可我还没有充分调用CPU的那么多核呢!”可是如何让BLAS/LAPACK这两个库在运行时能自动调用CPU里面的每个核呢?毕竟CPU又不是RRO的开发团队造的,而一个CPU里面的微代码就有上百万行!当今世界,去哪儿找懂CPU的人呢?只能是生产CPU的人了。RRO的团队想,要是CPU制造商自己能开发一套多线程线性代数运算库该多好啊!

其实,Intel早就想到这一点了。作为这个星球上最先进的半导体生产商,怎么能容忍自家CPU不支持当今使用最广的数值计算库呢!于是Intel拿出了自己的大杀器:MKL(Math Kernel Library)。

MKL可以理解为Intel药厂制造的封装了BLAS/LAPACK两大库的CPU大补丸。他能够使Intel自己家的处理器最大程度上的在线性代数计算中调用多个核提高效率。根据Intel自己的说法,安装了MKL以后,CPU在处理线性代数的时候简直像打了鸡血一样快:

这时,RRO团队手中的工具就都齐备了。他们通过修改R源代码,使得R在处理线性代数的时候能够直接调用MKL库,而MKL库则自动将计算任务合理分配给多个核。每个核在计算过程中,又能够调用BLAS/LAPACK库来提高运算效率

RRO团队获得了极大的成功,他们创办了自己的网站RevolutionAnalytics.com,并且让世界上所有人都能免费使用他们增强版本的R,这也是RRO中“Open”的出处。他们又进一步开发了更为强大的RRO商业版本RRE(Revolultion R Enterprise),RRE成为了当时唯一能够胜任商业大数据处理的R发行版本

然而,RRO团队的目标是让R成为能够在商业上替代SAS的统计分析系统,仅仅发布RRE是不够的。他们需要一个既懂商业又懂技术的合作者(或者大腿),纵观现在的IT版图,谁最懂IT在塑造商业模式中的威力?答案很明显——Microsoft。于是,在2015年底,RevolutionAnalytics(RRO所属公司)和微软共同宣布,RevolutionAnalytics由微软收购并成为其全资子公司,今后RevolutionAnalytics将借助微软的力量继续改进现有的RRO,并大力在商业领域推广R的使用。微软也宣布RRO/RRE将改名为MRO(Microsoft R Open)/ MRS(Microsoft R Server),并且在自家的数据库SQL Server和云服务Azure中无缝集成R, 这使得微软成为第一个将R集成到商业数据库与商业云中的IT公司

收购后的MRO有着如何脱胎换骨的表现?如何安装并使用MRO?MRO和哪个IDE配合起来食用口感更佳?请耐心期待下期的大猫课堂!

在微软给出的Benchmark中,MRO在处理线性代数时相对于CRAN版的R有着恐怖的2x~50x的性能提高。

期总结

本期大猫向大家介绍了自己所使用的增强版本的R:MRO。大猫回顾了MRO的前身RRO以及RRO实现性能提高的原理。在下一期,大猫会继续介绍MRO的性能基准测试、MRO配套的第三方工具以及MRO的安装方法,更多精彩还在后面哦!

我是大猫,咱们下期见!

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

本文分享自 大猫的R语言课堂 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
高效R开发(二):Microsoft R
上次关于MRO的文章推送之后,许多小伙伴表示对于Microsoft R这个增强版本的R相当有兴趣,希望大猫快点更新,所以大猫加班加点(最近要投Paper,时间有点紧啊),经过若干小时的奋战,新一期的大猫课堂又和大家见面啦!
用户7652506
2020/10/23
9620
高效R开发(二):Microsoft R
SAS or R:谁更适合你?(三)
上一起和大家聊了SAS和R在语法上的区别,本期继续昨天的话题,从“性能与并行计算(Performance & Parallel Computation)”这个方面来比较SAS和R。性能一直是许多同学孜孜追求的目标之一,SAS和R为了实现高性能各有什么独门秘籍?易用性怎样?本期将为您揭晓
用户7652506
2020/10/23
1.3K0
SAS or R:谁更适合你?(三)
49-R编程(十一:用microsoft R 随时多线程)
参见:https://cloud.tencent.com/developer/article/1728636
北野茶缸子
2021/12/17
8500
49-R编程(十一:用microsoft R 随时多线程)
【号外】Microsoft R Open 3.3.3发布!
今天是个好日子,微软的增强型R版本Microsoft R Open于美东时间四月四日发布了新版本3.3.3,自此和CRAN版本的R保持在了同一个版本号。
用户7652506
2020/10/23
7170
【号外】Microsoft R Open 3.3.3发布!
SAS or R:谁更适合你?
大家好!新一期的大猫课堂又和大家见面啦。这次开篇先和大家说两件事:首先是感谢各位老板的打赏(好多天饭钱T_T)。大猫一开始只是对打赏这个功能很好奇,于是自己先打赏了自己一次,想看看微信后台是如何运行的。没想到后来竟然有好多老板跟着也打赏了大猫,大猫简直惊讶得合不拢嘴——只能在心里一遍遍感谢各位恩主……
用户7652506
2020/10/23
5670
Centos 下非 Root 安装 Microsoft R Open
Centos 下非 Root 安装 Microsoft R Open 作者: Hyacz hyacinth.hao@foxmail.com 2017年8月30日 本教程发布时仅针对 Microsoft R Open 3.4.0 版本测试通过。 写在前面 我们新写的 GWAS 的算法包 MVP 采用了 Microsoft R Open,在我们对计算的优化中 MRO 起到了非常关键的作用。在测试的时候就遇到了在没有 root 权限要安装 MRO 的问题,经过百度、Google 都没有找到较好的方案,研究了
生信技能树
2018/03/09
2.5K1
Centos 下非 Root 安装 Microsoft R Open
高效使用R笔记3
每次R语言启动读入.Renviron和.Rprofile两个文件,前者主要是环境变量,程序位置和API密钥等;后者是启动进需要运行的几行R代码。启动时先找.Renviron,然后是.Rprofile,它们出现在3个目录中,安装目录(R_HOME,R.home()),家目录(HOME, Sys.getenv("HOME"))和当前工作目录(getwd()),顺序是从后往前的优先级,也就是有第三个就忽略第二个的。应该尽量在项目中使用特别的文件,防止对默认文件进行修改,更保险。
用户1075469
2021/05/20
8780
精通 NumPy 数值分析:6~10
到目前为止,您应该能够使用 NumPy 编写小型实现。 在整个章节中,我们旨在提供使用其他库的示例,在本章中,我们应退后一步,看看可以与 NumPy 一起用于项目的周围库。
ApacheCN_飞龙
2023/04/23
1.8K0
厉害了,numpy!!!
几乎所有使用Python处理分析数据的人都用过Pandas,因为实在太方便了,就像Excel一样,但你知道Pandas是基于Numpy开发出来的吗?
派大星的数据屋
2024/04/26
1780
厉害了,numpy!!!
英伟达CUDA高性能计算库详解
NVIDIA为CUDA生态系统提供了许多高性能库和框架,这些工具旨在简化并行计算的复杂度,并加速各种应用程序的开发。 cuBLAS (CUDA Basic Linear Algebra Subprograms)
用户7353950
2024/11/23
6430
英伟达CUDA高性能计算库详解
OpenBLAS项目与矩阵乘法优化 | 公开课+文字转录
提起矩阵计算,学过《高等数学》的人可能都听过,但若不是这个领域的研究者,恐怕也只停在“听过”的程度。在矩阵计算领域,开源项目OpenBLAS影响巨大,除IBM、华为等巨头公司在使用外,还吸引了全球的研究院校、开发者们关注。 雷锋网 AI 研习社近日有幸邀请到了澎峰科技创始人、OpenBLAS项目创始人和主要维护者张先轶,他将为我们介绍OpenBLAS开源项目以及矩阵乘法的优化。 嘉宾介绍 张先轶,中国科学院博士,MIT博士后,OpenBLAS开源项目创始人和主要维护者,PerfXLab澎峰科技创始人。曾
AI研习社
2018/03/29
4.6K0
OpenBLAS项目与矩阵乘法优化 | 公开课+文字转录
​Python又添一大科学计算库,基于Armadillo矩阵库的PyArmadillo发布
作为 C++ 中与 Eigen 并驾齐驱的一大科学计算库, Armadillo 因其简单易用的特性深受广大程序员和科学家的喜爱,也获得了 Facebook、NASA、Boeing、Siemens、Deutsche Bank、MIT、 CMU、Stanford 等公司和高校的广泛使用。此外, Armadillo 的主作者和 Rcpp 的主作者联合开发了 RcppArmadillo,作为 R 语言中的主要科学计算库,在 Github 每月下载量高达 97.2 万次。除此以外,Armadillo 还在著名开源机器学习库 mlpack 中被用作主要的依赖库之一, 获得了极高的知名度。
机器之心
2021/02/23
1.3K0
​Python又添一大科学计算库,基于Armadillo矩阵库的PyArmadillo发布
再见虚拟机!在Win10中使用Linux版本的R和Python
想象一下,你用 Linux 版本的 Tensorflow 建立了一个美妙的 RNN 模型,然后无缝切换到 Windows 用 Excel 直接编辑结果,画了一幅 fancy 的图给你的老板。在此期间,你的所有模型文件已经被自动同步到了 Onedrive/百度云/Dropbox 上了!整个过程丝毫没有使用虚拟机的“膈应”感!
1480
2019/05/21
6.6K0
Llama提速500%!谷歌美女程序员手搓矩阵乘法内核
近日,天才程序员Justine Tunney发推表示自己更新了Llamafile的代码,
新智元
2024/04/12
1920
Llama提速500%!谷歌美女程序员手搓矩阵乘法内核
开发者总结: 8 种最好的 AI 机器学习开源项目
随着 AI 技术快速发展,各种理论与实践层出不穷,它正在迅速改变我们生活中几乎每一个领域,从我们如何交流到用于交通的手段。作为开发者或者学习者,在开始构建机器学习应用程序之前,从众多开源项目中选择一项应该是一个艰巨的任务,日前,有网友在博客总结了 8 种最好的开源 AI 技术,为机器学习开发者指明道路。
机器人网
2018/07/23
5290
NumPy 1.26 中文官方指南(三)
这些文档阐明了 NumPy 中的概念、设计决策和技术限制。这是了解 NumPy 基本思想和哲学的好地方。
ApacheCN_飞龙
2024/04/26
9620
R语言的优劣
https://www.zhihu.com/question/19611094 作者:艾华丰 链接:https://www.zhihu.com/question/19611094/answer/15234451 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 R,不仅仅是一种语言本文 原载于《程序员》杂志2010年第8期,因篇幅所限,有所删减,这里刊登的是全文。简介:R是什么 转帖:来自《程序员》上的一篇文章,希望对大家有帮助工欲善其事,必先利其器,作为一个战斗在I
Albert陈凯
2018/04/04
1.1K0
Python机器学习库是如何打包并安装的
尽管依赖问题非常棘手,但明白包管理以及包编译安装原理有助于我们深刻理解计算机基本原理,避免成为一个调包侠。
PP鲁
2020/05/22
2.1K0
Python机器学习库是如何打包并安装的
走进向量计算:从源码编译 OpenBLAS
不论是折腾深度学习、高性能计算,还是折腾向量数据库、相似性检索领域,在折腾的过程中,我们都可能会遇到需要 “OpenBLAS” 这个开源矩阵计算库的场景。
soulteary
2023/03/05
1.2K0
走进向量计算:从源码编译 OpenBLAS
SAS or R:开源重要吗?
首先,咳咳,还是日常的开篇抱歉:由于最近大猫沉迷于Ingress无法自拔,所以原定于本期的data.table教程延后一期,咱们继续上次的系列《SAS or R:谁更适合你》,大猫来和小伙伴聊聊“开源”这件事。
用户7652506
2020/10/23
1.5K0
SAS or R:开源重要吗?
相关推荐
高效R开发(二):Microsoft R
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档