我在 R 中有一个脚本,它利用了 doParallel
包和并行化的 foreach
函数。我目前正在使用 detectCores()
命令的变体注册我的集群,该命令运行良好,因为我使用的机器有 32 个内核。
我的问题是,如果我可以通过多台 Linux 机器访问 HPC 资源,是否可以从多台机器上detectCores()
并在单个 foreach< 中实现它们
调用?
例如,如果我提交我的 HPC 作业以便它使用两个节点,是否可以让 detectCores()
函数生成 64 而不是 32 的值?
最佳答案
顶帖评论中的总结解决方案示例:
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)
关于r - 从多个节点检测核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46554997/