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)
为什么我会收到此错误?我该如何修复它?
这似乎是一个相对于最新版本的 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 注册运行器测试中也很有用。