代码之家  ›  专栏  ›  技术社区  ›  DoTheGenes

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

  •  1
  • DoTheGenes  · 技术社区  · 8 年前

    并行计算 课程问题在于:

    考虑以下代码:

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

    其中执行时间 compute() 与其参数的值成比例。我们希望使用OpenMP将这个循环与一个调度并行化 static , dynamic guided .查找以下表达式的示例: arg (即完成第2行),以便使用的最佳时间表为:

    1. 静止的

    2. 动态

    3. 引导

    解释你的答案。

    我理解OpenMP调度没有任何问题,但我很难找到任何类型的信息来帮助我决定使用哪些参数,以及为什么。

    课程是没有用的,我在谷歌上也没什么运气。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Secto Kia    8 年前

    他们要求您提出3种不同的方法,即“arg”可以适合3种调度方法中的每一种。

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

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

    arg=rand(); 因为这将导致每个计算的随机不同时间。

    用于指导日程安排,可能类似于 arg = i / 10; 因为arg在每个值上都会保持静态一段时间,而在值之间仍会动态变化。