2017-08-01 41 views
1

通過ClusterExport並行我有,我需要導出到PSOCKcluster在R.導出列表作爲R

我這樣做是通過以下方式體貼大小的對象的列表:

cl <- makePSOCKcluster(3, methods = TRUE) 

listOfMatrices <- c(bigMatrix1, bigMatrix2, bigMatrix3) 

for(i in 1:3){ 
    bigMatrix <- listOfMatrices[i] 
    clusterExport(cl[i], "bigMatrix", envir = environment()) 
} 

然而,這種方法是順序的,因爲出口n + 1需要出口n才能先完成。

有沒有更高效的方法來並行執行此操作?

+0

不知道我完全理解你想要的東西,但如果問題是在大矩陣上使用並行性,使用包bigmemory可以解決您的問題。 –

回答

1

您可以用clusterApply功能做到這一點:

library(parallel) 
cl <- makePSOCKcluster(3) 
listOfMatrices <- list(matrix(1,2,2), matrix(2,2,2), matrix(3,2,2)) 
clusterApply(cl, listOfMatrices, function(m) {bigMatrix <<- m; NULL}) 

您可以驗證它的工作正確使用clusterEvalQ

clusterEvalQ(cl, bigMatrix)