Abh*_*nav 1 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
Run Code Online (Sandbox Code Playgroud)
函数文件myFun()加载由给定的文件fileAddr{i},进行一些计算并返回结果.文件加载部分是最耗时的.我的机器有4个物理核心.我尝试parfor()了1,2,3和4名工人.每一次,时间消耗都在类似的范围内.我的理解是,如果不止一个工作者load()并行处理文件,程序运行速度会更快,但分析器结果会显示出来.
任何人都可以解释我在哪里犯了错误?
你只有1个硬盘.一次只能有一名工人从中读取它(它是一个带磁头的超速磁盘!).它的速度较慢,因为工作人员正在等待转向硬盘驱动器,所以你不会赢得时间.除此之外,所有无意中听到的数据发送和共享都让你变得更慢.
你试过spmd吗?但我怀疑它最终会得到与你相同的结果parfor.
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |