首页 > 解决方案 > R中的并行cpp函数?

问题描述

所以我有 2 个自定义 Rcpp 函数CustFunc1(x,y)CustFunc2(a,b). 两者都对计算要求很高(因此是 c++)。我的问题是在 R 中有一种方法可以与 dopar 包同时运行吗?或者我可以进行系统调用以直接访问 cpp 代码并尝试通过一些命令行工具进行并行处理?

现在的流程是:

result1=CustFunc(x,y) ##Takes 20 minutes
result2=CustFunc(a,b) ## Take 20 minutes

get_both <- function(x) {
foreach(i = seq_along(x)) %dopar% {
result1=CustFunc(x,y)
result2=CustFunc(a,b)
}
}
get_both$result1 == result1 #???
get_both$result2 == result2 ##??

标签: rparallel-processingdoparallel

解决方案


如果您的函数大约需要 20 分钟,我真的会考虑使用 RcppPaallel 包重写它们,它并不比直接 cpp 难多少。这样您就可以使用更多线程,但一次运行一个函数。当我使用自己的代码执行此操作时,我将计算时间从大约 15 分钟减少到不到 2 分钟。


推荐阅读