R - 与doSMP和foreach并行循环

时间:2011-03-16 15:13:13

标签: r parallel-processing loops

我刚刚发现了doSMP package,它可以并行执行foreach循环。

有人可以在下面的简单示例中指出我做错了什么吗?实际上,以这种方式使用doSMP和foreach会大大增加计算时间......

谢谢!

#------The "naive" method------
mat <- matrix(NA, nrow=1000, ncol=10000)
ptime <- system.time({
for(i in 1:10000)
{
    mat[, i] <- rnorm(1000)
}
})[3]

> ptime
elapsed 
   1.14 
#------------------------------

#------Using doSMP and foreach------
library(doSMP)
w <- startWorkers(2)
registerDoSMP(w)

ptime <- system.time({
mat2 <- foreach(i=1:10000, .combine="cbind") %dopar% rnorm(1000)
})[3]

stopWorkers(w)

> ptime
elapsed 
  10.26 
#-----------------------------------

N.B。我发布了一个非常相似的问题here我收到了另一个问题...但是,我仍然想知道为什么它不起作用并征求stats.stackexchange专家的意见

修改

你认为答案可能是“并行运行许多微小任务通常比执行顺序运行需要更多时间”???

0 个答案:

没有答案