r - 从多个节点检测核心

标签 r hpc parallel.foreach doparallel

我在 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/

相关文章:

r - Foreach 循环仅针对第一组工作人员返回错误消息

r - 映射列表和 mutate_at 以应用函数

r - 基于R中的多个最近匹配合并数据帧

math - 英特尔MKL与AMD Math Core库

c - 并行二分查找的性能比串行版本差

c# - 在 Parallel.ForEach 之外设置断点时的列表计数无效

避免嵌套 ifelse 语句的规则表

r - 将虚拟变量转换为 R 中的单个分类变量?

c++ - 为什么这两个 high(64bx64b) 函数给出不同的结果?

c# - 并行广度优先搜索