以下(简化)脚本在unix群集(4个虚拟内核)的主节点上正常工作。R foreach:从单机到群集
library(foreach)
library(doParallel)
nc = detectCores()
cl = makeCluster(nc)
registerDoParallel(cl)
foreach(i = 1:nrow(data_frame_1), .packages = c("package_1","package_2"), .export = c("variable_1","variable_2")) %dopar% {
row_temp = data_frame_1[i,]
function(argument_1 = row_temp, argument_2 = variable_1, argument_3 = variable_2)
}
stopCluster(cl)
我想利用16个节点的集群(总共16 * 4
虚拟核)英寸
我想我所需要做的就是更改由makeCluster
指定的并行后端。但我应该怎么做?文件不是很清楚。
在此基础上很旧的(2013)发布http://www.r-bloggers.com/the-wonders-of-foreach/看来,我应该改变的默认类型(sock
或MPI
- 这单会在UNIX上工作?)
编辑
从这vignette通过的foreach作者:
默认情况下,doParallel使用在类Unix 系统和诺孚多核功能在Windows上的功能。请注意,多核心 功能只能在单台计算机上运行任务,而不是在计算机上运行任何群集。但是,您可以使用下雪功能在群集上执行 ,使用类Unix操作系统,Windows或甚至组合。
you can use the snow functionality
是什么意思?我应该怎么做?
我没有使用for循环... – Antoine
我建议下载Revolution R open,它改进了统计库和多核支持。 [检查我的答案关于这个职位RRO的更多信息](http://stackoverflow.com/questions/31900708/how-can-i-get-r-to-use-more-cpu-usage/33996564#33996564) 。这与你的问题没有直接关系,但它会加快任何可以使用多核的数学计算和封装。 – Bas