如何让R使用更多的CPU使用率?

时间:2015-08-09 03:49:52

标签: r parallel-processing mathematical-optimization multicore integer-programming

我注意到R没有使用我所有的CPU,我希望将其大幅增加(高达100%)。我不希望它只是并行化一些函数;我希望R使用更多的CPU资源。我正在尝试使用lp()函数运行纯IP集合打包程序。目前,我运行Windows,我的计算机上有4个核心。

我曾尝试过雪,doParallel和foreach(尽管我不知道我在做什么)。

在我的代码中,我有这个......

library(foreach)
library(doParallel)
library(snowfall)

cl <- makeCluster(4)
registerDoParallel(cl)

sfInit(parallel = TRUE, cpus = 4)


#code that is taking a while to run but does not involve simulations/iterations

lp (......, all.int = TRUE)

sfStop()

R卡住并运行lp()很长一段时间。我的CPU大概是25%,但我怎么能增加呢?

2 个答案:

答案 0 :(得分:0)

如果您尝试并行运行4个不同的LP,请按照void QTextEdit::dropImage(QImage const& p_image, QString const& p_format) void QTextEdit::insertFromMimeData(const QMimeData* p_source) 中的说明进行操作。

snowfall

E.g。 sfClusterApply中的函数可以包含您的LP。

否则,请参阅有关您的问题的评论

答案 1 :(得分:0)

将此作为答案发布,因为评论中没有足够的空间 这不是直接针对您的问题的答案,而是针对性能的更多答案。

R默认使用慢速统计库,默认情况下也只能使用单核。改进的库是OPENBLAS / ATLAS。然而,这些可能是一个痛苦的安装 我个人最终使用this guide开始工作。

我最终使用了Revolution R open(RRO) + MKL,它同时改进了BLAS库和多CPU支持。它是另一种R分布,它的速度应该是常规R的20倍(我不能证实这一点,但它更快)。

此外,您可以检查CRAN HPC packages以查看是否有任何支持lp功能的改进包。

还有用于探索多CPU使用的软件包 Gavin的This回答,以及@ user3293236上面的答案显示了允许多CPU使用的软件包的几种可能性。