我在R中有一个利用doParallel
包和并行化foreach
函数的脚本。我目前正在使用detectCores()
命令的变体来注册我的集群,该命令运行良好,因为我使用的机器有32个核心。
我的问题是,如果我可以使用多台Linux计算机访问HPC资源,是否可以从多台计算机detectCores()
并在一次foreach
电话中实施 ?
例如,如果我提交HPC作业以使其使用两个节点,是否可以使detectCores()
函数生成64而不是32的值?
答案 0 :(得分:1)
在顶部帖子的评论中总结解决方案的示例:
library("parallel")
find_workers <- function(nodes) {
nodes <- unique(nodes)
cl <- makeCluster(nodes)
on.exit(stopCluster(cl))
ns <- clusterCall(cl, fun = detectCores)
rep(nodes, times = ns)
}
workers <- find_workers(c("n1", "n2", "n3"))
cl <- makeCluster(workers)