繁体   English   中英

指定R doParallel的核心数

[英]Specify number of cores for 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个核心,或者这是不可能的?

谢谢!

我确信这已在其他地方得到解答,但......

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

要么

cl <- makePSOCKcluster(detectCores() - 1)

会为此工作。

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

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

在运行并行进程之前使用mcaffinity ,可以限制核心数。

parallel::mcaffinity(1:3)

mcaffinity允许您的R工作仅分配前3个核心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM