我无法理解我为 Parallel Computing 课程所做的分配。有问题的是:
请考虑以下代码:
for(int i = 0; i < 1024; i++){ int arg = ... compute(arg); }
compute()
的执行时间与其参数的值成比例。我们希望使用OpenMP并行计划此循环,其中一个计划static
,dynamic
或guided
。查找arg
表达式的示例(即完整第2行),以便使用最佳计划:
静态
动态
- 醇>
引导
解释你的答案。
我在理解OpenMP计划时没有任何问题,但我无法找到任何可以帮助我决定使用哪些参数的信息,以及原因。
课程没有用,我也没跟谷歌好运。
我理解,如果人们不想给我作业解决方案&#34;,但是朝着正确方向的坚实指针会很好。简单地说,我如何评估哪个参数用于任何时间表?
答案 0 :(得分:2)
他们要求你提出3种不同的东西'arg'可能适合3种调度方法。
请记住,他们告诉过你,处理时间与arg的int值成正比。
因此,对于静态调度,arg必须始终为相同的数字,因此处理时间始终相同。因此像arg=10;
对于动态调度,这可能是当arg正在改变值时,因此像arg=rand();
这样会导致每个计算的随机时间不同。
对于指导调度,可能会像arg = i / 10;
那样,因为arg会在每个值上保持静态一段时间,同时仍然会动态地改变值。