我有一个用R语言编写的脚本,利用了
我的问题是,如果我可以访问具有多个Linux机器的HPC资源,是否可以从多个机器上检测内核数,并在单个
例如,如果我提交我的HPC作业以便它使用两个节点,那么是否可能使
doParallel
包和并行化的foreach
函数。我当前通过使用detectCores()
命令的变体来注册我的群集,在我使用的机器上非常有效,因为它有32个内核。我的问题是,如果我可以访问具有多个Linux机器的HPC资源,是否可以从多个机器上检测内核数,并在单个
foreach
调用中实现它们?例如,如果我提交我的HPC作业以便它使用两个节点,那么是否可能使
detectCores()
函数产生一个值为64而不是32?
parallel::makeCluster(c("n1", "n1", "n1" "n2", "n3"))
将在n1
上设置一个 (PSOCK) 集群,其中有 3 个工作进程,在n2
上有 1 个工作进程,在n3
上也有 1 个工作进程。 - HenrikBns <- clusterCall(cl, fun = detectCores)
。这一行获取了集群中每个节点上的核心数。将它们相加,你就可以得到可用的总核心数。请记住,我认为使用makeCluster()
命令时可以使用的工作进程数量是有限制的。我不记得确切的数字是多少。我想它是128。当我做这项工作时已经过了一段时间! - amelchermclapply()
仅使用单台机器上的核心。 - amelcher