R语言的并行运算(CPU多核)
通常R语言运行都是在CPU单个核上的单线程程序。有时我们会有需求对一个向量里的元素应用相同的函数,最终再将结果合并,并行计算可以大幅节约时间。
为了支持R的并行运算, parallel包已经被纳入了R的BASE库中,可以被直接调用,来实现在同一个CPU上利用多个核Core同时运算相同的函数。
版本一、Window版本的R程序
对比普通的LAPPLY函数和Parallel包下的多核makeCluster + parLapply函数效率
library(parallel)fun <- function(x){return (x+1);}funcTwoPara<-function(x,a){ return (x+a);} #单核的普通LAPPLY函数system.time({res <- lapply(1:5000000, fun);});# 用户 系统 流逝 # 20.91 0.03 21.35# 超过一个参数的 Function模型x=c(1:500)system.time({res <- lapply(x,funcTwoPara,a=1);});#多核的 MakeCluster 函数,这里利用了本机CPU的2个物理核心同时跑程序detectCores() # 4 coredetectCores(logical = F) # 2 core 物理核心cl <- makeCluster(getOption("cl.cores", 4));system.time({res <- parLapply(cl, 1:10000000, fun)});stopCluster(cl); |
版本二、Linux版本的R程序
library(parallel)fun <- function(x){return (x+1);}# 单核计算system.time({res <- lapply(1:5000000, fun);});# 多核并行计算detectCores(logical = F) # 8mc <- getOption("mc.cores", 8)system.time({res <- mclapply(1:5000000, fun, mc.cores = mc);});stopCluster(mc);# 8核的 结果user system elapsed 7.175 1.187 3.416# 4核的结果user system elapsed 13.415 1.443 8.946# 2核的结果user system elapsed 16.882 1.726 8.139# 单核 计算 结果 user system elapsed 16.760 0.039 16.807 |
Reference:
http://blog.sina.com.cn/s/blog_6f194ed30101blpu.html
http://blog.itpub.net/24229571/viewspace-1120592/
R语言的并行运算(CPU多核)的更多相关文章
- MxNet+R︱用R语言实现深度学习(单CPU/API接口,一)
MxNet有了亚马逊站台之后,声势大涨,加之接口多样化,又支持R语言所以一定要学一下.而且作为R语言的fans,为啥咱们R语言就不能上深度学习嘞~ -------------------------- ...
- R语言︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读
XGBoost不仅仅可以用来做分类还可以做时间序列方面的预测,而且已经有人做的很好,可以见最后的案例. 应用一:XGBoost用来做预测 ------------------------------- ...
- 碎片︱R语言与深度学习
笔者:受alphago影响,想看看深度学习,但是其在R语言中的应用包可谓少之又少,更多的是在matlab和python中或者是调用.整理一下目前我看到的R语言的材料: ---------------- ...
- R语言使用 multicore 包进行并行计算
R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...
- 提高R语言速度--转载
1. 参考<R语言编程艺术>(Norman Matloff) chapter 14 & chapter 15 2. 方法 (1)向量化 与非向量化-循环做个对比: ...
- R语言编程艺术(5)R语言编程进阶
本文对应<R语言编程艺术> 第14章:性能提升:速度和内存: 第15章:R与其他语言的接口: 第16章:R语言并行计算 ================================== ...
- 美团 R 语言数据运营实战
一.引言 近年来,随着分布式数据处理技术的不断革新,Hive.Spark.Kylin.Impala.Presto 等工具不断推陈出新,对大数据集合的计算和存储成为现实,数据仓库/商业分析部门日益成为各 ...
- R语言缺点
R的优点:免费,开源,体积小.缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和1 ...
- Go语言在国产CPU平台上应用前景的探索与思考
http://www.chinaaet.com/article/3000087559 0 引言 CPU是电子产品的核心,代表着信息产业的发展水平.CPU发展至今已经有四十多年的历史了,实际就是Inte ...
随机推荐
- Net Core网络通信
Net Core网络通信 https://www.cnblogs.com/xxred/p/9859893.html 聊聊如何设计千万级吞吐量的.Net Core网络通信! 作者:大石头 时间:2018 ...
- Redis、Memcache和MongoDB
一.Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境中QPS高峰 ...
- Java面试题:栈和队列的实现
面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要 ...
- 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对
报错:当前标识(NT AUTHORITY\NETWORK SERVICE)没有对C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP. ...
- 读写另一EXE的内存
procedure TfrmMain.tmrChangeServerNameTimer(Sender: TObject); function GetProcessID(FileName: string ...
- Delphi单元文件之-简体繁体互转
Function GBCht2Chs(GBStr: String): AnsiString; {GBK繁体转简体} Var len:integer; pGBCHTChar: PChar; ...
- java 最差实践
HashMap size 陷阱: 错误写法: Map map = new HashMap(collection.size()); for (Object o : collection) { map.p ...
- SQL Server 2008怎么自动备份数据库
在SQL Server 2008数据库中.为了防止数据的丢失我们就需要按时的来备份数据库了.要是每天都要备份的话,人工备份会很麻烦的,自动备份的话就不需要那么麻烦了,只 要设置好了,数据库就会自动在你 ...
- Playbooks 中的错误处理
Topics Playbooks 中的错误处理 忽略错误的命令 控制对失败的定义 覆写更改结果 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. ...
- JQUEY 引用
$(document).ready(function(){ alert($("a:first").attr("id")); });