Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 花费相同或更多时间的并行计算_R_Foreach_Parallel Processing_Cluster Computing - Fatal编程技术网

R 花费相同或更多时间的并行计算

R 花费相同或更多时间的并行计算,r,foreach,parallel-processing,cluster-computing,R,Foreach,Parallel Processing,Cluster Computing,我试图在R中为大型模拟设置并行计算,但我注意到在时间上没有任何改进 我尝试了一个简单的例子: library(foreach) library(doParallel) stime<-system.time(for (i in 1:10000) rnorm(10000))[3] print(stime) 10.823 cl<-makeCluster(2) registerDoParallel(cores=2) stime<-system.time(ls<-foreach

我试图在R中为大型模拟设置并行计算,但我注意到在时间上没有任何改进

我尝试了一个简单的例子:

library(foreach)
library(doParallel)

stime<-system.time(for (i in 1:10000) rnorm(10000))[3]
print(stime)
10.823

cl<-makeCluster(2)
registerDoParallel(cores=2)
stime<-system.time(ls<-foreach(s = 1:10000) %dopar% rnorm(10000))[3]
stopCluster(cl)
print(stime)
29.526
库(foreach)
图书馆(双平行)

stime并行执行许多小任务可能会非常低效。标准解决方案是使用分块:


ls并行计算会带来开销。这是预期的结果。您的意思是启动群集需要时间?或者你是什么意思?是的,但我只是测量任务本身,而不是初始化集群所需的时间。我应该在什么时候获得更大的好处?即使只是集群初始化后的协调(例如,将所有内容组合回单个阵列),也需要时间和开销。此外,根据您执行并行计算的方式,您还需要通过上下文切换等产生开销。您需要运行
配置文件
(我认为这是函数名),以查看设置要传递到每个节点的数据所花费的时间与节点处理数据所花费的时间。一般来说(以一种危险的方式开始一个句子:-),并行性只在你发送相对较少的数据时才有帮助,但对所述数据进行了大量处理。不确定lapply是否在做你认为它是什么?@MartinMorgan-Oops。谢谢你指出这一点,马丁。希望它现在是正确的。
ls <- foreach(s=1:2) %dopar% {
  for (i in 1:5000) rnorm(10000)
}
ls <- lapply(rep(10000, 10000), rnorm)
ls <- foreach(s=1:2, .combine='c') %dopar% {
  lapply(rep(10000, 5000), rnorm)  
}