-1

在 R 中,我使用包“doParallel”和“foreach”进行并行计算。最近,我在 HPC 中运行程序。它有四个节点,每个节点有 16 个处理器。我的 R 程序只需要 4 个处理器。但是 HPC 总是将程序分配给一个节点,该节点占用了所有 16 个处理器。所以我不能在那个节点上运行任何其他程序。如何选择一个节点的自定义处理器数量?以及如何选择不在一个节点上运行程序的处理器? 我用

library(foreach)
library(doParallel)
library(MASS)
registerDoParallel(makeCluster(4))

我只需要使用 4 个处理器。但是 hpc 总是将一个程序分配给一个节点中的所有处理器(实际上该程序在 4 个处理器中运行)。 例如,一个节点有 16 个处理器。我有四个程序,每个程序都需要四个内核。我应该怎么做才能将四个程序放在一个节点中?

4

1 回答 1

0

parallel::detectCores()应该给你你拥有的核心数量。

我通常使用的成语是parallel::detectCores()with

library(parallel)
library(doParallel)


num_cores <- detectCores()
cl <- makeCluster(num_cores)
registerDoParallel(cl)

# parallel code here

# stop cores/cluster
stopCluster(cl)
registerDoSEQ()
于 2015-02-27T17:02:15.883 回答