从多个节点检测核心

Detect Cores from Multiple Nodes

我在 R 中有一个脚本,它利用了 doParallel 包和并行化的 foreach 函数。我目前正在使用 detectCores() 命令的变体注册我的集群,该命令运行良好,因为我使用的机器有 32 个内核。

我的问题是,如果我可以通过多台 Linux 机器访问 HPC 资源,是否可以从多台机器 detectCores() 并在单个 foreach呼叫?

例如,如果我提交我的 HPC 作业以便它使用两个节点,是否可以让 detectCores() 函数生成 64 而不是 32 的值?

置顶评论中的示例总结解决方案post:

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)