【发布时间】:2019-01-03 16:23:47
【问题描述】:
下面给出了一个简单的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 名工人的池。每次,时间消耗都差不多。我的理解是,如果不止一名工作人员在load()并行处理文件,程序会运行得更快,但分析器结果显示不同。
谁能解释我在哪里犯了错误?
【问题讨论】:
-
parfor()is NOT a magic wand,不要这样对待。如果文件加载确实是此操作的瓶颈,那么并行化将无法帮助您加快代码速度。 HDD/SSD 都具有有限的读取速度,如果您将其最大化,您将无法获得更快的速度。只有当计算成为瓶颈时,并行化才能为您提供潜在帮助。
标签: matlab parfor matlab-load