【发布时间】:2012-08-27 01:17:08
【问题描述】:
我正在努力保存每次 PARFOR 迭代的输出,但直到现在都没有成功。我在网上搜索了很多,根据一些官方的 newgroup 回复,处理保存在 PARFOR 中的正确方法(即解决“透明度”问题)是以下列方式使用外部函数(基本示例) :
parfor i=1:120
display(i);
[LL ll] = eig(rand(1000,1000));
record(:,i) = diag(ll);
samplesave('save.mat',record(:,i),i);
end
随着
function samplesave(fname, data,i)
persistent st;
store(:,i)=data;
save(fname);
end
问题在于,将“st”声明为 PERSISTENT 会使变量在同一工作人员的调用中变得“持久”,而不是在 PARFOR 循环中,因此在任何给定点,您都只有最后一个设法保存的工人的全部历史;下一次 PARFOR 迭代(来自不同的工作人员)将用(仅)该工作人员的整个历史记录覆盖该记录,依此类推。
如何逐步保存所有工作人员的历史记录?
谢谢,
【问题讨论】:
标签: matlab parallel-processing