假设我有一台主机(弱本地主机)和许多可用作计算群集的多核远程主机。是否有无缝的方式来访问并行计算?对于首发,我可以使用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 我更多地询问是否有任何可以构建的软件包/资源,而不是这是否可行。