我发出parfeval
和获取输出使用parfor
其他做同样的事情比较两个块之间的执行时间,一:parfeval慢于PARFOR
parfor k = 1:N
a = rand(5000);
b = inv(a);
end
与
for k = 1:N
a = rand(5000);
F(k) = parfeval(p,'inv',1,a);
end
for k = 1:N
[completedIdx,value] = fetchNext(F);
fprintf(1,'%d ',completedIdx);
end
的parfor
始终更快。对此情况有何洞见?我的简单理解是parfor
本质上是将每个循环作为一个并行作业运行。
相关阅读:http://stackoverflow.com/questions/32146555/saving-time-and-memory-using-parfor-in-matlab/32146700#32146700'inv'操作确实是隐式多线程的,所以使用' parfor'不会让它变得更快(请参阅我链接的帖子)。 – Adriaan
具有完美的感觉。我看,但没有找到多线程功能之间的调用,但我相信你。我仍然不确定这是否解释了与parfor相比较慢的parfeval –