Matlab并行写入和读取
Matlab parallel writes and read
我有一个 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
另外,当使用两个worker时,性能提高了2。但是当使用16个worker时,性能没有太大变化。有什么问题吗?
在这种情况下,UM
、Temp
和PMatrix
都是sliced变量。这意味着 parfor
机器可以看到这些变量在独立部分(称为 "slices")中由工作人员操作,因此只有所需的部分从客户端传输到工作人员。
至于为什么添加更多工作器不会带来额外的速度改进 - 可能是您没有在循环主体中执行足够多的计算密集型操作来克服传输数据的开销。
我有一个 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
另外,当使用两个worker时,性能提高了2。但是当使用16个worker时,性能没有太大变化。有什么问题吗?
在这种情况下,UM
、Temp
和PMatrix
都是sliced变量。这意味着 parfor
机器可以看到这些变量在独立部分(称为 "slices")中由工作人员操作,因此只有所需的部分从客户端传输到工作人员。
至于为什么添加更多工作器不会带来额外的速度改进 - 可能是您没有在循环主体中执行足够多的计算密集型操作来克服传输数据的开销。