首页 > 解决方案 > 指定 R doParallel 的核心数

问题描述

我正在尝试在 R 中指定一个并行进程,以在我的计算机上使用 4 个可能的内核中的 3 个,以便在后台运行时为其他进程留出一点 CPU 资源。我的代码看起来像这样:

library(doParallel)

cl <- makePSOCKcluster(3)
registerDoParallel(cl)

results <- foreach(i = 1:10) %dopar% {
...some processes to be parallelized...
}

stopCluster(cl)

当我运行它并查看任务管理器时,所有内核都在 100% 运行。有没有办法只使用 3 个核心,或者这是不可能的?

谢谢!

标签: rparallel-processing

解决方案


我敢肯定这已经在其他地方得到了回答,但是......

cl <- makePSOCKcluster(detectCores() * .875)

或者

cl <- makePSOCKcluster(detectCores() - 1)

将为此工作。

查看帮助页面,detectCores()最后一个警告是,我曾经将detectCores 放在一个循环中,认为它很快......它不是,所以如果你需要它多次,请分配一个变量。

最后,我现在非常喜欢使用 furrr(future_map 等)而不是 foreach() %dopar% 进行并行化。


推荐阅读