【发布时间】:2020-12-04 12:35:19
【问题描述】:
您好,我曾经使用 Rcpp 代码并将其并行化到多个内核,但在更改我的桌面后它不再工作了。
例如,我正在尝试运行以下代码,
rm(list = ls())
options(repos = c(CRAN = "http://cran.rstudio.com"))
n_cluster <- 2
## library ----------------------------------------------------------
name_pkg <- c(
# Parallelization
"foreach",
"doParallel",
# Rcpp
"Rcpp"
)
name_pkg <- unique(name_pkg)
invisible(lapply(name_pkg, library, character.only = T)) # load multiple packages
## Assign clusters for parallel computing ----------------------------------------------------------
cl <- makeCluster(n_cluster, outfile = "/Users/Sungshin/Desktop/Result_verbose.txt")
registerDoParallel(cl)
## start -------------------------------------------------------------------
res_fit <- foreach(i = 1:4, .packages = name_pkg) %dopar% {
evalCpp("1+1")
}
stopCluster(cl)
但它会返回
Error in { : task 1 failed - "Error 1 occurred building shared library."
-
但是,我可以在本地 Rstudio 上运行
evalCpp("1+1")(未并行化时)。因此,我想我已经准备好(本地)运行 Rcpp 代码,但是结合并行计算时错误仍然存在。 -
我检查了输出文件(“/Users/Sungshin/Desktop/Result_verbose.txt”),但没有任何报告。
-
writeLines(strsplit(Sys.getenv("PATH"), ";")[[1L]])给了我这个:
\usr\bin
C:\Program Files\R\R-4.0.2\bin\x64
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\System32\WindowsPowerShell\v1.0\
C:\WINDOWS\System32\OpenSSH\
C:\Program Files\PuTTY\
C:\Users\Sungshin\AppData\Local\Programs\Python\Python39\Scripts\
C:\Users\Sungshin\AppData\Local\Programs\Python\Python39\
C:\Program Files\MySQL\MySQL Shell 8.0\bin\
C:\Users\Sungshin\AppData\Local\Microsoft\WindowsApps
C:\texlive\2020\bin\win32
C:\Program Files\R\R-4.0.2\bin\x64
C:\rtools40\mingw64\bin
谁能帮我解决这个问题?我真的很感激。
【问题讨论】:
-
可能重复;将代码放到集群中的工作节点上以组织代码在每个节点上加载的包中的最简单方法。
-
@DirkEddelbuettel 谢谢,但我认为如果代码没有经过足够好的测试,我们肯定不想构建一个包,因此会不断更改。
-
当然。但是你需要在每个节点上重建编译的函数。因为只是希望它不会移动到那里,便携。正如我所说,这一切都已经讨论过了。
-
rcpp标签目前在 2586 问题。我知道我们每个人都非常特别,但有 2500 个问题实际上之前已经被问过。这里的搜索功能可能是你不知道的最好的朋友…… -
不会在
foreach中采购 Rcpp 代码在每个节点上编译它吗?当然,我也会多看rcpp标签贴。
标签: r rcpp parallel.foreach