Open MP Schedules - 寻找循环的最佳参数

Open MP Schedules - Finding the best argument for a loop

我无法理解我为 并行计算 课程做的作业。问题是这样的:

Consider the following code:

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

Where the execution time of compute() is proportional to the value of its argument. We want to parallelize this loop using OpenMP, with one of the schedules static, dynamic or guided. Find an example of an expression for arg (i.e. complete line 2) so that the best schedule to use would be:

  1. static

  2. dynamic

  3. guided

Explain your answers.

我对 OpenMP Schedules 的理解没有任何问题,但我很难找到任何类型的信息来帮助我决定使用哪些参数以及原因。

课程没用,我也没有运气Google。

我理解大家 "don't want to give me homework solutions",但是如果有正确方向的可靠指示会更好。简而言之,我如何评估将哪个参数用于任何附表?

他们要求您想出 3 种不同的东西'arg' 可能适合 3 种调度方法中的每一种。

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

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

对于动态调度,这将是 arg 改变值的时候,所以像 arg=rand(); 这样会导致每次计算的时间随机不同。

为了指导调度,可以使用 arg = i / 10; 之类的东西,因为 arg 将在每个值处保持静态一段时间,同时仍会通过值动态变化。