有没有办法在R中无缝地使用具有多核(混合树状集群)的远程集群?

时间:2014-12-23 18:50:52

标签: r parallel-processing

假设我有一台主机(弱本地主机)和许多可用作计算群集的多核远程主机。是否有无缝的方式来访问并行计算?对于首发,我可以使用lapply

我目前的想法是首先创建套接字集群,然后在中间从服务器上创建fork集群。这创造了一个嵌套的混合"树状集群,有趣但不是很无缝。

例如:

library(parallel)

hybridParLapply <- function(cl = NULL, X, fun, batches = 1e2, ...) {
  #create chunks of work
  X <- parallel:::splitList(X, batches)
  #execute parallel
  parLapply(cl, X, function(X, fun, ...) {
    library(parallel)
    #a helper function that creates a cluster with "no.core - 2" workers
    do.call(c, parLapply(dplyr::init_cluster(), X, fun, ...))
  }, fun, ...)
}

slaves <- "localhost" # c("some", "slave", "hosts")
cl <- makePSOCKcluster(slaves)
hybridParLapply(cl, 1:1000, sqrt)
#clean up
clusterEvalQ(cl, { dplyr::stop_cluster() })
stopCluster(cl)

dplyr https://github.com/hadley/dplyr/blob/master/R/cluster.R

中帮助者的相关代码

所以只是想知道是否有类似的东西已经成熟且无缝。如果没有,任何人都认为这个包很有意思和/或对设计有任何想法?

此外,这可能被认为是重复的: Combining Multicore with Snow Cluster 我更多地询问是否有任何可以构建的软件包/资源,而不是这是否可行。

0 个答案:

没有答案