필자는 다양한 기계에서 실행 해 본 코드의 테스트 피스를 몇 개 가지고 있는데, 항상 동일한 결과가 나타납니다. 나는 다양한 방법들 뒤에있는 철학이 foreach의 % dopar %에 대한 백엔드로 상호 교환 적으로 사용될 수 있다고 생각했다. 왜 이것이 사실이 아닌가? 이 코드 조각의 각이 실패하는 동안doMC 대 doSNOW 대 doSMP : 'foreach'의 다양한 병렬 백엔드가 기능적으로 동일한 이유는 무엇입니까?
library(plyr)
library(doMC)
registerDoMC()
x <- data.frame(V= c("X", "Y", "X", "Y", "Z"), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE)
을 :
예를 들어,이 코드는 작동 네 가지 경우에
library(plyr)
library(doSMP)
workers <- startWorkers(2)
registerDoSMP(workers)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z"), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE)
stopWorkers(workers)
library(plyr)
library(snow)
library(doSNOW)
cl <- makeCluster(2, type = "SOCK")
registerDoSNOW(cl)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z"), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE)
stopCluster(cl)
library(plyr)
library(doMPI)
cl <- startMPIcluster(count = 2)
registerDoMPI(cl)
x <- data.frame(V= c("X", "Y", "X", "Y", "Z"), Z = 1:5)
ddply(x, .(V), function(df) sum(df$Z),.parallel=TRUE)
closeCluster(cl)
이 foreach(i = 1:3,.combine = "c") %dopar% {sqrt(i)}
정확한 같은 결과를 얻을 수 있습니다, 그래서 내가 알고 테스트를 거친 각 컴퓨터에 패키지가 제대로 설치되고 제대로 작동하는지 확인하십시오.
doMC는 doSMP, doSNOW 및 doMPI와 다른 점이 있습니까?
이 답변을 아직 업데이트 하시겠습니까? –