Сначала я установил doMC::registerDoMC(...)
, но потом понял, что он не работает на windows и подумал, что, может быть, это на самом деле не нужно, поскольку мне нужна только параллельная обработка следующих функций, которые ничего не сообщают о doMC
в их документации:
parallel::mclapply(..., mc.cores = ncores)
caret::train(..., trControl = trainControl(..., allowParallel=T))
Однако, к моему удивлению, все работает без сердечника без doMC::registerDoMC(...)
Есть ли портативный способ заменить doMC::registerDoMC(...)
на?
ОБНОВЛЕНИЕ
В Ubuntu 18.04 с R 3.6.x, имеющим:
ncores <- parallel::detectCores()
Если заменить это:
if(!require(doMC)) install.packages("doMC")
registerDoMC(ncores)
caret::train(..., trControl = trainControl(..., allowParallel=T))
этим :
if(!require(doParallel)) install.packages("doParallel")
cl <- makeCluster(ncores)
registerDoParallel(cl, ncores)
caret::train(..., trControl = trainControl(..., allowParallel=T))
stopImplicitCluster()
Затем caret::train
падает через 2 секунды
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.