17. 並列化(Rでの書式)
① ノードでRを起動する。
② クラスタノードを指定する。
③ 並列化処理を実行
④ 各ノードで指定された数だけR
プロセスを起動して処理
⑤ 結果を元のRに集約
① ターミナルにて「r」を実行
② cl <- makeCluster(c(“サーバ名”,〜略〜), type = “SOCK”)
registerDoSNOW(cl)
③ foreach(i = 1:1000) %dopar% { sum(rnorm(10000)) }
④ ※ライブラリがやります
⑤ ※ライブラリがやります
31. 付録(コラッツの問題)
do_cluster <- function(num=10^4, client_num=1){
cl <- makeCluster(c("localhost","localhost",中略,"Slave03")[1:client_num], type = "SOCK")
registerDoSNOW(cl)
ret = system.time(foreach(i = 1:num,.combine = "cbind") %dopar% {
n <- i
while(n != 1){
if( n %% 2 == 0 ) n <- n / 2
else n <- 3 * n + 1
}
})
stopCluster(cl)
ret
}
rm(ret)
test_count <- 15
ret <- c()
for (i in 0:test_count) ret <- cbind(ret,do_cluster(num=10^3, client_num = (i%%16)+1))