R中的并行循环,我需要rcpp吗?

时间:2017-10-04 13:57:09

标签: r parallel-processing

我使用foreach从R中的复杂函数中进行采样。由于这是一个独立的采样,因此可以进行高度参数化。但是,只要我增加采样大小,我的例程就不可能在普通计算机的下降时间内完成。

所以,我想请求建议加快这个过程。一个最小的例子就是这个

devtools::install_github("franciscorichter/dmea02")
library(dmea02)

test <- function(n){
  no_cores <- detectCores()- 1
  cl <- makeCluster(no_cores)
  registerDoParallel(cl)
  tree = sim.tree(seed=1)$tree.extant
  trees <- foreach(i = 1:n, combine = list) %dopar% dmea02::rec.tree(tree=tree, pars=c(0.8,0.1,40))
  stopCluster(cl)
}


system.time(test(10))
system.time(test(100))
system.time(test(1000))

正如我所说,只要我将采样大小增加到更高的订单,就会开始花费太多时间。

我知道在C ++上编写循环并使用Rcpp最终会有所帮助,但我不是计算机科学家而且我不知道如何用C ++编写代码所以我需要一些时间来学习它,而我不是完全确定它是否会真正改善很多。

任何想法都表示赞赏。

0 个答案:

没有答案