randomForestSRC 包 R 中的 rfsrc() 命令不使用多核功能
rfsrc() command in randomForestSRC package R not using multi core functionality
我正在使用 R(针对 Windows 7、32 位)使用 randomForests
进行文本分类。由于数据集很大,我在互联网上查找以加快模型构建速度并遇到了 randomForestSRC
包。
我已经按照软件包安装手册中的所有步骤进行操作,但是在执行 rfsrc()
命令期间,R 只使用了一个逻辑核心(与 randomforest()
相同),最大 cpu 利用率为 25%。
我按照手册使用了以下命令。
options(mc.cores=detectcores()-1, rf.cores = detectcores()-1)
我正在使用 Windows 7 Professional 32 位 Service Pack 1,在具有 4 个逻辑内核的 Intel i3 2120 CPU 上。谁能阐明我可能缺少的东西?任何其他使用 randomForest
和多核利用率的有效方法也会有所帮助!
问题是 randomForestSRC
使用 mclapply
函数进行并行执行,但 mclapply
不支持 Windows 上的并行执行。 randomForestSRC
也可以使用 OpenMP 进行多线程并行执行,但 CRAN 的二进制分发版中并未内置该功能,因此您必须在启用 OpenMP 支持的情况下从源代码构建包。
我认为你的两个选择是:
- 在您的 Windows 机器上使用 OpenMP 支持构建
randomForestSRC
;
- 自己并行调用一个随机森林函数。
这是一个简单的并行示例,它使用 randomForest
包以及 foreach
和 doParallel
,派生自 foreach
小插图中的示例:
library(randomForest)
library(doParallel)
workers <- detectCores()
cl <- makePSOCKcluster(workers)
registerDoParallel(cl)
x <- matrix(runif(500), 100)
y <- gl(2, 50)
ntree <- 1000
rf <- foreach(n=rep(ceiling(ntree/workers), workers),
.combine=combine, .multicombine=TRUE,
.packages='randomForest') %dopar% {
randomForest(x, y, ntree=n)
}
此示例应该适用于 Windows、Mac OS X 和 Linux。有关详细信息,请参阅 foreach vignette。
我正在使用 R(针对 Windows 7、32 位)使用 randomForests
进行文本分类。由于数据集很大,我在互联网上查找以加快模型构建速度并遇到了 randomForestSRC
包。
我已经按照软件包安装手册中的所有步骤进行操作,但是在执行 rfsrc()
命令期间,R 只使用了一个逻辑核心(与 randomforest()
相同),最大 cpu 利用率为 25%。
我按照手册使用了以下命令。
options(mc.cores=detectcores()-1, rf.cores = detectcores()-1)
我正在使用 Windows 7 Professional 32 位 Service Pack 1,在具有 4 个逻辑内核的 Intel i3 2120 CPU 上。谁能阐明我可能缺少的东西?任何其他使用 randomForest
和多核利用率的有效方法也会有所帮助!
问题是 randomForestSRC
使用 mclapply
函数进行并行执行,但 mclapply
不支持 Windows 上的并行执行。 randomForestSRC
也可以使用 OpenMP 进行多线程并行执行,但 CRAN 的二进制分发版中并未内置该功能,因此您必须在启用 OpenMP 支持的情况下从源代码构建包。
我认为你的两个选择是:
- 在您的 Windows 机器上使用 OpenMP 支持构建
randomForestSRC
; - 自己并行调用一个随机森林函数。
这是一个简单的并行示例,它使用 randomForest
包以及 foreach
和 doParallel
,派生自 foreach
小插图中的示例:
library(randomForest)
library(doParallel)
workers <- detectCores()
cl <- makePSOCKcluster(workers)
registerDoParallel(cl)
x <- matrix(runif(500), 100)
y <- gl(2, 50)
ntree <- 1000
rf <- foreach(n=rep(ceiling(ntree/workers), workers),
.combine=combine, .multicombine=TRUE,
.packages='randomForest') %dopar% {
randomForest(x, y, ntree=n)
}
此示例应该适用于 Windows、Mac OS X 和 Linux。有关详细信息,请参阅 foreach vignette。