こんな質問があったので、これを改変してみる。
aaa2<-function(x){ mean(rnorm(100)) } elapsed.time <- matrix(0, 8, 2) colnames(elapsed.time) <- c("single", "multi") for(i in 1:8){ cl<-makeCluster(i, type="SOCK") clusterExport(cl, "aaa2") elapsed.time[i, 2] <- system.time(parSapply(cl, 1:1000, aaa2))[3] elapsed.time[i, 1] <- system.time(sapply(1:100000, aaa2))[3] } elapsed.time single multi [1,] 4.472 0.569 [2,] 4.457 0.026 [3,] 4.496 0.026 [4,] 4.580 0.051 [5,] 4.558 0.030 [6,] 4.435 0.028 [7,] 4.473 0.028 [8,] 4.448 0.037
CPUの割当は、ぶっちゃけ2より大きな数を割り当てても機能するようだ。
実行後に、
使われていないコネクションn (<-localhost:xxxxx) を閉じます
とか云々言われるけど、割り当てるように言われたけど使ってませんよ、という意味なのだろう。たぶん。
3以上のCPU割当でも、計算してくれているし、実行速度もこの程度なら高速化できている。
質問の回答を読むと、CPUに計算をしてもらうときの通信速度やらメモリやら分割やらうんたらかんたら書いてあって、うん、なるほどわからん。