makePSOCKcluster(names = spec, ...) 中出现错误:集群设置失败。3 个工作人员中的 3 个无法连接

lav*_*eOG 4 foreach r raster doparallel

我正在尝试招募更多核心来增加我正在分析的一些激光雷达数据的处理时间,但我不断收到“makePSOCKcluster(names = spec, ...) 中的错误:集群设置失败。3 个工作人员中的 3 个无法连接。” 我运行此命令后:

 UseCores <-detectCores() -1
cl <- makeCluster(UseCores)
registerDoParallel(cl) 
foreach(i=1:lengthcanopy_list)) %dopar% {
  library(raster)
  ttops <- vwf(CHM = canopy_test, winFun = lin, minHeight = 2, maxWinDiameter = NULL)
}
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?我该如何修复它?

Gar*_*ini 5

这似乎是一个相对于最新版本的 R 的问题。在进一步更新之前,在 GitHub 上查看这个问题,似乎有以下两种解决方法。

直接使用它来创建集群:

cl <- parallel::makeCluster(2, setup_strategy = "sequential")
Run Code Online (Sandbox Code Playgroud)

或者,为了获得长期解决方案,请将以下内容添加到您的~/.Rprofile

## WORKAROUND: https://github.com/rstudio/rstudio/issues/6692
## Revert to 'sequential' setup of PSOCK cluster in RStudio Console on macOS and R 4.0.0
if (Sys.getenv("RSTUDIO") == "1" && !nzchar(Sys.getenv("RSTUDIO_TERM")) && 
    Sys.info()["sysname"] == "Darwin" && getRversion() >= "4.0.0") {
  parallel:::setDefaultClusterOptions(setup_strategy = "sequential")
}
Run Code Online (Sandbox Code Playgroud)

即使这个解决方法对于 Rstudio 用户来说是必要的,它也可以具有一般用途,因为它在我的 GitLab 注册运行器测试中也很有用。

  • 这不仅与 OSX 有关。我在 Manjaro Linux 上遇到了同样的问题,正如您所建议的,在我的会话中运行 `parallel:::setDefaultClusterOptions(setup_strategy = "sequential")` 解决了这个问题。 (3认同)
  • @DanHicks它并行运行,它只是按顺序创建套接字。我几分钟前才用过它,效果很好。 (3认同)