foreach
을 사용하는 경우 doMC
을 백엔드로 사용하면 다른 시스템에서 다른 동작을 생성합니다.멀티 코어를 사용하지 않는 foreach
우분투 12.04.4 LTS를 실행하는 Linux 서버에서 다음 코드 (foreach vingette에서 수정)는 단일 코어에서 5 개의 작업을 동시에 실행하므로 원하는 동작이 아닙니다.
library(foreach)
library(doMC)
registerDoMC(cores=5)
getDoParWorkers()
x <- iris[which(iris[,5] != "setosa"), c(1,5)]
trials <- 10000
r <- foreach(icount(trials), .combine=cbind) %dopar% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
세션 정보는 :
> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C LC_MONETARY=C
[6] LC_MESSAGES=C LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=C LC_IDENTIFICATION=C
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] doMC_1.3.3 iterators_1.0.7 foreach_1.4.2
loaded via a namespace (and not attached):
[1] codetools_0.2-8 compiler_3.1.0 tools_3.1.0
OSX 10.7.5를 실행하는 Mac에서 동일한 코드 실행이 5 개 가지 코어 5 실행중인 작업의 요구와 예상되는 동작을 생산하고 있습니다.
세션 정보 :
> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] C
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] doMC_1.3.2 iterators_1.0.6 foreach_1.4.1
loaded via a namespace (and not attached):
[1] codetools_0.2-8 compiler_3.0.1 tools_3.0.1
나는 다른 병렬 백엔드를 사용하여 동일한 동작을 관찰했다. 두 기계 모두 20 개 이상의 코어를 가지고 있습니다. 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?