我刚刚开始在Parallel in R中进行计算以优化我的代码,尽管我了解基本概念,但我有一个看似简单的问题,但找不到答案。
如果我的计算机上有一个 n 个迭代和 m> n 个内核的foreach循环,那么如果我将与分配 n 个内核相反,此计算需要n + 1 个或更多内核?
library(doParallel)
library(foreach)
cl <- makeCluster(m) #using m cores
registerDoParallel(cl)
object <– foreach(i = 1:n, ...) %dopar% {
[...]
}
stopCluster(cl)
我认为不行,但这全归结于foreach如何将工作分配到核心。是一次每个内核一次迭代,还是将工作进一步细分?
谢谢。
答案 0 :(得分:0)
答案是否定的。其他人将处于闲置状态。
例如在系统监视器打开的情况下运行它:
library(doParallel)
registerDoParallel(cl <- makeCluster(4))
object <- foreach(i = 1:2) %dopar% {
start <- proc.time()[3]
while (proc.time()[3] - start < 10) NULL
}
stopCluster(cl)