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:
static
dynamic
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 将在每个值处保持静态一段时间,同时仍会通过值动态变化。
我无法理解我为 并行计算 课程做的作业。问题是这样的:
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 schedulesstatic
,dynamic
orguided
. Find an example of an expression forarg
(i.e. complete line 2) so that the best schedule to use would be:
static
dynamic
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 将在每个值处保持静态一段时间,同时仍会通过值动态变化。