Ant*_*ine 7 parallel-processing r cluster-computing parallel-foreach snow
以下(简化)脚本在unix集群的主节点(4个虚拟核心)上正常工作.
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)
Run Code Online (Sandbox Code Playgroud)
我想利用集群中的16个节点(16 * 4总共虚拟核心).
我想我需要做的就是更改指定的并行后端makeCluster.但是我应该怎么做呢?文档不是很清楚.
基于这个相当古老的(2013年)帖子http://www.r-bloggers.com/the-wonders-of-foreach/,似乎我应该更改默认类型(sock或者MPI- 哪个可以在unix上工作? )
编辑
来自foreach作者的这个小插图:
默认情况下,doParallel在类Unix系统上使用多核功能,在Windows上使用snow功能.请注意,多核功能仅在一台计算机上运行任务,而不是在一组计算机上运行.但是,您可以使用snow功能在群集上执行,使用类Unix操作系统,Windows甚至组合.
什么you can use the snow functionality意思?我该怎么办?
该parallel包的合并multicore和snow包,但如果你想在多个节点上运行,你必须使用在"雪的功能" parallel(即,部分parallel是从派生snow).实际上,这意味着您需要makeCluster使用设置为"PSOCK","SOCK","MPI"或"NWS"的"type"参数进行调用,因为这些是当前版本的parallel支持执行所支持的唯一集群类型.多个节点.如果您使用的是由知识渊博的HPC系统管理员管理的群集,则应使用"MPI",否则可能更容易使用"PSOCK"(或"SOCK",如果您有特殊原因使用"雪"包).
如果选择创建"MPI"集群,则应使用mpirun带有"-n 1"选项的命令通过R执行脚本,并将第一个参数makeCluster设置为应生成的工作器数.(如果你不知道这意味着什么,你可能不想使用这种方法.)
如果您选择创建"PSOCK"或"SOCK"集群,则第一个参数makeCluster必须是主机名向量,并makeCluster在makeCluster执行时通过"ssh"命令启动这些节点上的工作程序.这意味着您必须在所有指定的主机上运行ssh守护程序.
我在其他地方写了很多关于这个主题的文章,但希望这会帮助你开始.
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |