Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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-是否有方法创建嵌套的%dopar%foreach循环?_R_Foreach_Parallel Processing_Multicore_Parallel Foreach - Fatal编程技术网

R-是否有方法创建嵌套的%dopar%foreach循环?

R-是否有方法创建嵌套的%dopar%foreach循环?,r,foreach,parallel-processing,multicore,parallel-foreach,R,Foreach,Parallel Processing,Multicore,Parallel Foreach,我在一个64核的工作站上处理每日卫星图像系列 对于每个图像,我使用foreach循环对所有像素执行一些代数运算。一些测试表明,该foreach环路的最佳内核数为20 这大概就是我现在正在做的: for (i in length(number_of_daily_images){ # perform some pre-processing on each image # register cluster to loop over pixels registerDoParallel(2

我在一个64核的工作站上处理每日卫星图像系列

对于每个图像,我使用foreach循环对所有像素执行一些代数运算。一些测试表明,该foreach环路的最佳内核数为20

这大概就是我现在正在做的:

for (i in length(number_of_daily_images){

  # perform some pre-processing on each image

  # register cluster to loop over pixels
  registerDoParallel(20)

  out <- foreach(j=1:length(number_of_pixels_in_each_image)) %dopar% {

    # perform some calculations

  } # end inner loop
} # end outer loop
我只需要加载一次卫星图像,因此代码中涉及的I/O处理很少。因此,绝对有进一步加快代码速度的空间。由于我只使用了计算机上可用内核的三分之一,我想同时运行三天,以节省工作流程中的宝贵时间

因此,我也在考虑并行化我的外循环。应该是这样的:

# register cluster to loop over images
registerDoParallel(3)

out2 <- foreach (i = length(number_of_daily_images) %dopar% {

  # perform some pre-processing on each image

  # register cluster to loop over pixels
  registerDoParallel(20)

  out1 <- foreach(j = 1:length(number_of_pixels_in_each_image)) %dopar% {

    # perform some calculations

  } # end inner loop
} # end outer loop

然而,当我运行这段代码时,我得到一个错误,指出内部循环中处理所涉及的一个变量不存在。但它与常规outter for循环配合使用效果良好


因此,我的问题是:我是否可以像计划的那样在foreach中使用两个嵌套的%dopar%循环?如果没有,还有其他方法可以并行化我的外循环吗?

这里是每个维护人员的选择

使用%:%运算符:

注册数字并行60 out2