我有一个parfor循环,但每个循环从公共源数组UM
和Temp
读取,并写入公共单元PMatrix
。这会导致瓶颈问题吗?我怎么能避免这种情况?感谢。
parfor i = 1:um_Elements
for j = 1:Temp_Elements
ind = (i-1)*Temp_Elements + j;
u = UM(i);
SS();
tem = Temp(j);
PMatrix{i,j}(1) = u;
PMatrix{i,j}(2) = tem;
end
end
此外,当使用两名工作人员时,性能提高了2.但是当使用16名工作人员时,性能变化不大。可能有什么不对?
答案 0 :(得分:0)
在这种情况下,UM
,Temp
和PMatrix
都是sliced个变量。这意味着parfor
机器可以看到这些变量在工作人员的独立部分(称为"切片")中进行操作,因此只有所需部分从客户端传输到工作人员。
至于为什么增加更多的工作人员并没有带来额外的速度改进 - 你可能只是在循环体内做了一些计算密集的事情来克服开销的问题。传输数据。