Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
registerDoMC有可移植的替代品吗?_R_Parallel Processing_Multicore - Fatal编程技术网

registerDoMC有可移植的替代品吗?

registerDoMC有可移植的替代品吗?,r,parallel-processing,multicore,R,Parallel Processing,Multicore,我最初设置doMC::registerDoMC。。。但后来意识到它在windows上不起作用,并认为可能实际上不需要它,因为我只需要并行处理以下函数,这些函数在文档中没有说明任何关于doMC的内容: parallel::mclapply(..., mc.cores = ncores) caret::train(..., trControl = trainControl(..., allowParallel=T)) 然而,令我惊讶的是,没有doMC::registerDoMC,一切都运行单核 有

我最初设置doMC::registerDoMC。。。但后来意识到它在windows上不起作用,并认为可能实际上不需要它,因为我只需要并行处理以下函数,这些函数在文档中没有说明任何关于doMC的内容:

parallel::mclapply(..., mc.cores = ncores)
caret::train(..., trControl = trainControl(..., allowParallel=T))
然而,令我惊讶的是,没有doMC::registerDoMC,一切都运行单核

有没有一种可移植的方法来取代doMC::registerDoMC。。。用什么

更新

在Ubuntu 18.04和R3.6.x中,具有:

ncores <- parallel::detectCores()
因此:

if(!require(doParallel)) install.packages("doParallel")
cl <- makeCluster(ncores)
registerDoParallel(cl, ncores)

caret::train(..., trControl = trainControl(..., allowParallel=T))

stopImplicitCluster()

免责声明:我是作者

尝试foreach后端

doFuture::registerDoFuture()
future::plan("multisession")

作为doFuture验证测试的一部分,我使用不同的future并行后端运行所有示例。到目前为止,他们都通过了doFuture,这表明future框架能够自动识别需要导出到后台工作人员的所有global。这不是真的,比如说,-我认为主要原因是插入符号中的并行化仅仅是?使用类似多核的后端进行测试,其中globals只起作用,例如..

检查未来和未来xxx包,否则doParallelFYI,它要么是doParallel::registerDoParallelcl=cluster,要么是doParallel::registerDoParallelcores=n。注意,它们提供了两个完全不同的并行化后端。。。除非在MS Windows上,后者在内部成为前者的变体。cl是一个强制参数,这就是我必须创建cl集群的原因。。简单性究竟发生了什么:不正确的数据;它是cl或cores,而不是两者。你凭什么相信这是强制性的?太好了!谢谢麦克拉普利怎么样?我不想重写我的代码。。。我需要吗?所以,阿福,这部分有点离题了,因为上面是关于“插入符号”,它内部依赖于“foreach”。话虽如此,您应该能够用future.apply::future\u lappy调用替换parallel::mclappy。后者将使用您在future::plan…中指定的任何并行后端。。。。
Aggregating results
Something is wrong; all the RMSE metric values are missing:
      RMSE        Rsquared        MAE     
 Min.   : NA   Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA   Max.   : NA  
 NA's   :162   NA's   :162   NA's   :162  
Error: Stopping
In addition: Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,  :
  There were missing values in resampled performance measures.
doFuture::registerDoFuture()
future::plan("multisession")