运行集群上R中的RStan作业时,是否有可能使用过多的内核会导致内存不足?

When running RStan jobs in R on a cluster, is it possible using too many cores will result in insufficient memory?

我目前正尝试在 R 的计算集群上 运行 并行化 RStan 作业。我通过指定以下两个选项来做到这一点:

options(mc.cores = parallel::detectCores())
rstan_options(auto_write = TRUE)

以上分配了 48 个可用内核,我的总 RAM 为 180 GB。我一直认为理论上更多的内核和更多的 RAM 更好。我正在 运行 宁很长的工作,我的集群中出现内存不足错误。我想知道我是否可能没有为每个核心提供足够的内存。是否有可能 48 个内核每个都在拆分 180 GB,然后每个内核都用完了?

如果我使用 180 GB 的 RAM 而不是 3 核,这会解决内存错误吗?或者无论我有多少个内核,如果它是一个长期的工作,总内存总是会在某个时候用完?谢谢!

RStan 只会使用与链数一样多的内核(默认为 4 个)。如果您在 Linux 集群上使用 shell,它将分叉而不是复制数据。因此,如果您有空闲内核,最好在可能的情况下使用 map_rect 函数利用它们在 Stan 程序中并行计算。

但所有这些可能与您的记忆问题无关。在大多数情况下,它甚至不需要 1 GB。