在插入符号文档中给出了允许并行处理以下代码的工作
library(doMC)
registerDoMC(cores = 5)
## All subsequent models are then run in parallel
但是在最新的R版本(3.4)中,包doMC不可用。任何人都可以让我知道任何其他方式进行并行处理吗?
更新:罗马建议的工作原理。 DoMC不适用于Windows。对于Windows,请使用doParallel包cls = makeCluster(no of cores to use)
,然后使用registerDoParallel(cls)
。还要确保在trControl中将allowParallel设置为TRUE。
答案 0 :(得分:5)
doMC
利用包multicore
的强大功能,以分布式/并行模式进行计算。如果您使用Windows不支持的平台,这很好。
您可以使用其他框架,例如随R附带的parallel
。为此,您需要在所有三个主要平台上运行的程序包doParallel
。
答案 1 :(得分:3)
通常我这样做会添加allowParallel= TRUE
:
svmopt.caret=train(Y~.,data=nearsep1,method="svmLinear",
trControl=trainControl(method="cv",number=10,search="grid"),
tuneGrid=paramgrid,
allowParallel=TRUE)
答案 2 :(得分:2)
只需扩展前面的答案的实现范围,并且基本上使用Caret package documentation,以下是对我有用的食谱:
set.seed(112233)
library(parallel)
# Calculate the number of cores
no_cores <- detectCores() - 1
library(doParallel)
# create the cluster for caret to use
cl <- makePSOCKcluster(no_cores)
registerDoParallel(cl)
# do your regular caret train calculation enabling
# allowParallel = TRUE for the functions that do
# use it as part of their implementation. This is
# determined by the caret package.
stopCluster(cl)
registerDoSEQ()