- temp <- matrix(rnorm(1000000), ncol = 100)
- ##单核运行
- system.time(foreach(x = 1:10000, .combine = 'c') %do% {sum(temp[x,])})
- library(foreach)
- library(doParallel)
- library(iterators)
- cl <- makeCluster(3)
- registerDoParallel(cl)
- ##多核运行
- system.time(foreach(x = 1:10000, .combine = 'c') %dopar% {sum(temp[x,])})
- ##多核分块
- system.time(foreach(x = iapply(temp,1), .combine = 'c') %dopar% {sum(x)})
- stopCluster(cl)
提供三种运行模式,看上去提供了并行运算和分块处理机制,应该加快运行效率。但实际问题是三种的运行效率是依次下降的。
请教这里影响并行运算的主要因素是什么,该如何解决?
ps:第一种单核运行和多核运行个人觉得有可能还是由于资源分配耗用的时间,但是第三种模式至少在第二种的基础上减少了变量复制的时间,运行效率下降实在有些不能理解。


雷达卡





京公网安备 11010802022788号







