Dav*_*ith 30 linux windows parallel-processing packages r
我有一台运行Windows XP的四核笔记本电脑,但是看看任务管理器R似乎一次只能使用一个处理器.如何让R使用所有四个处理器并加速我的R程序?
han*_*7id 42
我有一个基本系统,我在"for"循环中并行化我的程序.一旦了解了需要完成的工作,这种方法很简单.它只适用于本地计算,但这似乎是你所追求的.
您需要安装这些库:
library("parallel")
library("foreach")
library("doParallel")
Run Code Online (Sandbox Code Playgroud)
首先,您需要创建计算群集.我经常在运行并行程序时做其他事情,所以我想保持一个开放状态."detectCores"函数将返回计算机中的核心数.
cl <- makeCluster(detectCores() - 1)
registerDoParallel(cl, cores = detectCores() - 1)
Run Code Online (Sandbox Code Playgroud)
接下来,使用"foreach"命令以及%dopar%运算符调用for循环.我总是使用"try"包装器来确保丢弃操作失败的任何迭代,并且不会破坏其他好的数据.您需要指定".combine"参数,并将任何必要的包传递到循环中.请注意,"i"定义为等号,而不是"in"运算符!
data = foreach(i = 1:length(filenames), .packages = c("ncdf","chron","stats"),
.combine = rbind) %dopar% {
try({
# your operations; line 1...
# your operations; line 2...
# your output
})
}
Run Code Online (Sandbox Code Playgroud)
完成后,清理:
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
csg*_*pie 15
从版本2.15开始,R现在支持多核计算.只需加载并行包
library("parallel")
Run Code Online (Sandbox Code Playgroud)
并查看相关的插图
vignette("parallel")
Run Code Online (Sandbox Code Playgroud)
我听说REvolution R支持更好的多线程,然后R和REvolution的典型CRAN版本也支持Windows中的64位R. 我一直在考虑购买副本,但我发现他们的价格不透明.他们的网站上没有价目表.很奇怪.
我相信这个multicore
包适用于XP.它提供了一些基本的多进程功能,特别是通过提供直接替换lapply()
和一种评估新线程中表达式的简单方法(mcparallel()
).