gpt4 book ai didi

R foreach : from single-machine to cluster

转载 作者:行者123 更新时间:2023-12-04 11:03:08 25 4
gpt4 key购买 nike

以下(简化)脚本在 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)

我想利用集群中的 16 个节点(总共 16 * 4 个虚拟核心)。

我想我需要做的就是更改 并行后端 makeCluster 指定.但是我该怎么做呢?文档不是很清楚。

基于这篇相当老的 (2013) 帖子 http://www.r-bloggers.com/the-wonders-of-foreach/看来我应该更改默认类型( sockMPI - 哪一个 - 可以在 unix 上使用?)

编辑

从此 vignette由 foreach 的作者:

By default, doParallel uses multicore functionality on Unix-like systems and snow functionality on Windows. Note that the multicore functionality only runs tasks on a single computer, not a cluster of computers. However, you can use the snow functionality to execute on a cluster, using Unix-like operating systems, Windows, or even a combination.


you can use the snow functionality 是什么意思意思是?我该怎么做?

最佳答案

parallel包是 multicore 的合并和 snow包,但如果你想在多个节点上运行,你必须使用 parallel 中的“雪功能” (即 parallel 中派生自 snow 的部分)。实际上,这意味着您需要调用 makeCluster将“type”参数设置为“PSOCK”、“SOCK”、“MPI”或“NWS”,因为这些是当前版本parallel所支持的唯一集群类型支持在多个节点上执行。如果您使用的是由知识渊博的 HPC 系统管理员管理的集群,则应使用“MPI”,否则使用“PSOCK”(或“SOCK”,如果您有特殊原因使用“snow”包)可能更容易)。

如果您选择创建“MPI”集群,您应该通过 R 使用 mpirun 执行脚本带有“-n 1”选项的命令和makeCluster的第一个参数设置为应该产生的 worker 数量。 (如果您不知道这意味着什么,您可能不想使用这种方法。)

如果您选择创建“PSOCK”或“SOCK”集群,makeCluster 的第一个参数必须是主机名向量,并且 makeClustermakeCluster 时,将通过“ssh”命令在这些节点上启动工作程序。被执行。这意味着您必须在所有指定的主机上运行 ssh 守护程序。

我在其他地方写了更多关于这个主题的文章,但希望这会帮助你开始。

关于R foreach : from single-machine to cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com