限制 R 中的 CPU 用法

Unlimiting the CPU usage from R

有什么方法可以限制 CPU 的使用,让我的 PC 更加努力地快速完成任务?目前 k-means 算法估计在 10 天内完成,这是我想减少的时间。

R默认是单线程的,在CPU上只运行在单线程上,如果你的机器是16核或者32核的就有点可惜了。通过 取消 CPU 用法的限制 ,我不得不假设你在问是否有任何方法可以让 R 过程(假设是 k-means 算法的一部分)利用通过 运行 并行处理您的全部 CPU 能力。

许多 R 程序包和进程不会通过并行处理得到帮助。因此,针对您的特定问题的技术解决方案归结为您正在使用的包实现。像 caret 这样的流行软件包在可能的情况下确实支持并行化,即使您可能需要添加一个额外的 allowParallel=T 参数。它们与 doMC 等库结合使用以允许多核进程。在下面的示例代码中,我通过registerDoMC(8)函数让我的机器使用8核,然后设置allowParallel=T

library(doMC)
registerDoMC(8)
system.time({
  ctrl_2 <- trainControl(method="cv", number=3, allowParallel=T)
  fb_forest_2 <- train(classe ~ ., data=fb_train, method="rf", trControl = ctrl_2)  
})

同样,并行处理并不总是有帮助 - 并非所有进程都可以并行化! foreach 的文档是 a great read,因此如果您有时间,请看一看。针对您的问题的具体代码解决方案还取决于您使用的库实现。