R的并行包加载库的RAM使用过多

在某些机器上,在所有内核上加载软件包会占用所有可用 RAM,从而导致错误 137 并且我的 R 会话被终止。在我的笔记本电脑 (Mac) 和 Linux 计算机上,它运行良好。在我想要运行它的 Linux 计算机上,它没有 32 核和 32 * 6GB RAM。系统管理员告诉我计算节点上的内存是有限的。然而,根据我在下面的编辑,我的记忆需求并没有超出任何想象。

我如何调试它并找出不同之处?我是这个parallel包的新手。

这是一个示例(假设该命令install.packages(c(“tidyverse”,”OpenMx”))已在 4.0.3 版的 R 中运行):

我还注意到,这似乎只适用于OpenMxmixtools包。我mixtools从 MWE 中排除,因为OpenMx足以产生问题。tidyverse单独工作正常。

我尝试过的一种解决方法是不在集群上加载包,而只是.libPaths("~/R/x86_64-pc-linux-gnu-library/4.0/")在 of 的主体中进行评估 exprclusterEvalQ并像OpenMx::vec在我的函数中一样使用命名空间命令,但这会产生相同的错误。所以我被卡住了,因为在三台机器中的两台上它运行良好,只是不在我应该使用的一台(计算节点)上。

.libPaths("~/R/x86_64-pc-linux-gnu-library/4.0/")
library(parallel)
num_cores <- detectCores()
cat("Number of cores found:") 
print(num_cores)
working_mice <- makeCluster(num_cores) 
clusterExport(working_mice, ls())
clusterEvalQ(working_mice, expr = {
  library("OpenMx")
  library("tidyverse")
  })

通过简单地加载包,它似乎消耗了所有可用的 RAM,从而导致错误 137。这是一个问题,因为我需要在每个可用内核中加载库,它们的功能正在执行任务。

随后,我正在使用DEoptim但加载包足以产生错误。

编辑

我已经使用分析了代码profmem,发现示例代码中的部分需要大约 2MB 的内存,而我试图运行的整个脚本需要 94.75MB。然后,我还使用我的操作系统(Catalina)进行了检查,并捕获了屏幕截图中显示的以下过程。

这些数字都没有让我觉得过多,尤其是在每个 CPU 约 6GB 和 32 个内核的节点上。除非,我在这里遗漏了一些重要的东西。

以上是R的并行包加载库的RAM使用过多的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>