小编Big*_*ats的帖子

R - 在foreach和doParallel中使用> 64个核心时,插入符号中的模型无法完成

关于R中并行后端的2个问题:

1)parallel::detectCores()我的机器上没有检测到正确的内核数量:

在此输入图像描述

    parallel::detectCores(logical = FALSE)
    [1] 24
    parallel::detectCores(logical = TRUE)
    [1] 48
Run Code Online (Sandbox Code Playgroud)

2)当运行插入符号模型时,每当我选择超过64个核心时,即使每个进程都已成功完成(因为它出现在日志中),模型也无法完成.无论我在32核计算机上尝试使用多少核心,我都会发生这种情况,当我运行makeCluster(64)它时,它会工作并makeCluster(65)挂起.

library(caret)
library(doParallel)
library(xgboost)

iris <- iris[1:100,]
iris$Species <- as.factor(as.character(iris$Species))

tc <- trainControl(method="repeatedcv", 
                   classProb = TRUE, 
                   verboseIter = TRUE,
                   allowParallel = TRUE)

stopCluster(cl)
cl <- makeCluster(65, outfile="D:\\R_data\\Log\\test.txt")
registerDoParallel(cl)

system.time(
    train.rf <- train(Species ~ .,data=iris, method="xgbTree", trControl=tc, metric = "Accuracy", verbose = TRUE)
)
Run Code Online (Sandbox Code Playgroud)

上面挂起20-30分钟或更长时间,永远不会执行,而下面的代码在20秒内完成:

> cl <- makeCluster(64, outfile="D:\\R_data\\Log\\test2.txt")
> registerDoParallel(cl)
> system.time(
    +         train.rf <- train(Species ~ .,data=iris, method="xgbTree", trControl=tc, metric …
Run Code Online (Sandbox Code Playgroud)

parallel-processing foreach r r-caret

3
推荐指数
1
解决办法
398
查看次数

标签 统计

foreach ×1

parallel-processing ×1

r ×1

r-caret ×1