为什么parfor尽管切片仍然很慢?

时间:2018-07-26 15:42:39

标签: matlab parfor matlab-load

下面有一个简单的parfor循环。

% fileAddr is a cell array of (size N) of file-addresses
sIdx = nan(N,1);
eIdx = nan(N,1);
errMsg = cell(N,1);
parfor i=1:N
    [sIdx(i),eIdx(i),errMsg{i}] = myFunk(fileAddr{i});
end

函数文件myFun()加载fileAddr{i}给定的文件,进行一些计算并返回结果。文件加载部分最耗时。我的机器有4个物理核心。我尝试了parfor(),其中有1,2,3和4个工作人员。每次,时间消耗都差不多。我的理解是,如果多个{@ {1}}并行并行处理文件,则该程序将运行得更快,但探查器结果却显示为相反。

有人可以解释我在哪里犯错吗?

1 个答案:

答案 0 :(得分:5)

您只有1个硬盘驱动器。一次只能读取1个工人(它是带有磁头的超速磁盘!)。它的速度较慢,因为工作人员正在等待轮换HDD的时间,因此您不会浪费时间。再加上所有偷听的数据发送和共享,您将使其变慢。

您尝试过spmd吗?但我怀疑它最终会得到与parfor相同的结果。