Matlab并行读写
我有一个parfor循环,但每个循环都从公共源数组Matlab并行读写,matlab,parallel-processing,Matlab,Parallel Processing,我有一个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
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名工人时,性能变化不大。可能有什么问题?在这种情况下,
UM
、Temp
和PMatrix
都是变量。这意味着parfor
机器可以看到这些变量由工人在独立部分(称为“切片”)中操作,因此只有所需部分从客户转移到工人
至于为什么增加更多的工作人员不会带来额外的速度提高,可能是因为您在循环体中没有做足够的计算密集型工作来克服传输数据的开销 谢谢。我还有一个问题。我正在做~13000
(I,j)
,但到目前为止,我只能做外部循环的parfor
。是否有办法对内部循环执行parfor
,以便我可以将13000次计算完全分发给我的工作人员?谢谢。parfor
只能在一个并行级别上运行。如果您的代码确实与上面的代码完全相同,那么矢量化比parfor
更有可能提高您的速度。谢谢。你能就如何进行矢量化给出一些建议吗?谢谢