Rで作ったsnowクラスタの操作
このブログが凄い
http://d.hatena.ne.jp/MikuHatsune/
並列計算のコードを拝借します. すみません.
clusterCallを使いたい. 高水準関数を使わずに並列計算します.
結論から言うと, 面倒なのでもうやりたくないです.
snowクラスタを作って操作するのは難しいです.
parSapplyとかforeachとかでいいです.
fn <- function(){ N <- 300 res <- numeric(N) for(trial in 1:N){ a1 <- sample(c(7, -1), size=trial, prob=c(1/6, 5/6), replace=TRUE) res[trial] <- sum(a1) >= 0 } return(res) } library(snow) cl <- makeCluster(4, type = "SOCK") clusterExport(cl, "fn") # 苦肉の策にも程がある x <- matrix(0, 1200, 2500) system.time(for(i in 1:(10000/4)) x[,i] <- unlist(clusterCall(cl, fn))) #matrixをunlistするとかもう #system.time(parSapply(cl, 1:10000, function(x){fn()})) tmp0 <- unlist(x) tmp <- matrix(tmp0, 300,10000) res <- rowMeans(tmp) plot(res, type="l") abline(h=0.95, lty=2, col="red") head(which(res > 0.5), n=1) #答え sort(res)