Performance 查找并行使用一定数量的CPU时应用程序的最大速度

Performance 查找并行使用一定数量的CPU时应用程序的最大速度,performance,parallel-processing,parallelism-amdahl,Performance,Parallel Processing,Parallelism Amdahl,假设我们有以下代码: int i,j; for(i=0; i<20; i++) A[i] = A[i] + B[i]; for(j=0; j<8; j++){ C[j] = C[j] + D[j]; E[j] = E[j] + C[j]; } inti,j; 对于(i=0;i根据以下位置 CPU的数量不应该限制在14个,你应该把向量的大小取为n。我们用阿玛达尔定律做的是发现一个算法的伸缩性有多好,当p变为无穷大时,这个限制就达到了。你关于用阿玛达尔定律并行这个

假设我们有以下代码:

int i,j;

for(i=0; i<20; i++)
   A[i] = A[i] + B[i];

for(j=0; j<8; j++){
   C[j] = C[j] + D[j];
   E[j] = E[j] + C[j];
}
inti,j;

对于(i=0;i根据以下位置
CPU的数量不应该限制在14个,你应该把向量的大小取为n。我们用阿玛达尔定律做的是发现一个算法的伸缩性有多好,当p变为无穷大时,这个限制就达到了。

你关于用阿玛达尔定律并行这个代码的假设是不对的。你的代码是按阿玛达尔定律顺序排列的我们关心这部分的增强,所以在计算第一个循环时,20个串行作业中只有14个是并行的。然后线程到达第二个循环(除非您想将此代码重新组织为完全并行版本)。对于第二个循环,代码的所有部分都可以并行化。现在,您应该找到每个增强部分相对于串行部分的增强百分比,然后找到其加速比