打开MP计划 - 查找循环的最佳参数

时间:2016-10-11 07:40:45

标签: c for-loop openmp schedule

我无法理解我为 Parallel Computing 课程所做的分配。有问题的是:

  

请考虑以下代码:

for(int i = 0; i < 1024; i++){
    int arg = ...
    compute(arg);
}
     

compute()的执行时间与其参数的值成比例。我们希望使用OpenMP并行计划此循环,其中一个计划staticdynamicguided。查找arg表达式的示例(即完整第2行),以便使用最佳计划:

     
      
  1. 静态

  2.   
  3. 动态

  4.   
  5. 引导

  6.         

    解释你的答案。

我在理解OpenMP计划时没有任何问题,但我无法找到任何可以帮助我决定使用哪些参数的信息,以及原因。

课程没有用,我也没跟谷歌好运。

我理解,如果人们不想给我作业解决方案&#34;,但是朝着正确方向的坚实指针会很好。简单地说,我如何评估哪个参数用于任何时间表?

1 个答案:

答案 0 :(得分:2)

他们要求你提出3种不同的东西'arg'可能适合3种调度方法。

请记住,他们告诉过你,处理时间与arg的int值成正比。

因此,对于静态调度,arg必须始终为相同的数字,因此处理时间始终相同。因此像arg=10;

对于动态调度,这可能是当arg正在改变值时,因此像arg=rand();这样会导致每个计算的随机时间不同。

对于指导调度,可能会像arg = i / 10;那样,因为arg会在每个值上保持静态一段时间,同时仍然会动态地改变值。