为什么我得到不同的结果与parfor和for循环?

15的观点(30天)
你好,
我试图运行一个特定的代码15次,每次为一组新的数据所以我迭代并不是连续的。我用SPM工具箱和试图使用matlabpool和parfor加速计算。parfor循环和循环的结果是不同的,即使我只加载一个数据集,而不是15集即parfor I = 1:1。如果我关闭matlabpool然后结果是相同的。我的代码看起来像下面的。我没有包含我所有的细节定义的结构。这段代码是完全一样的for循环。
我在DCM结构变量定义一些参数。数据集的名称,每个parfor迭代应该在DCM.xY.Dfile加载保存。然后,DCM spm_dcm_erp发送。在这个函数,数据集的名字是保存在DCM.xY。Dfile加载和一些参数计算,直到模型可能需要从1到64的迭代收敛。然后,一些参数将被添加到年底DCM和spm_dcm_erp(和内部功能不是在parfor循环)更新的DCM将被保存在磁盘上DCM.name中定义的名称。这个保存的DCM我检查这两个模型(和parfor)和两种情况是不同的。*我甚至跑parfor只是我的一个数据集(而不是我= 1:15我把= 1),结果仍然是不同的从一个for循环。*有趣的是当我运行循环模型收敛迭代62但当我运行parfor收敛迭代11。*我尝试保存工作空间内spm_dcm_erp和两个条件的参数(和parfor) spm_dcm_erp函数的循环开始之前完全相同的计算模型的参数我确保parfor不会改变变量之前以任何方式发送给spm_dcm_erp函数。
clc
清晰的所有
DCM = [];
parfori = 1
spm (“违约”,“脑电波”);
DCM = [];
%的路径数据等。
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Pbase = pwd;%目录与你的数据,
Pdata = fullfile (Pbase,“。”);Pbase %数据目录
Panalysis = fullfile (Pbase,“。”);%在Pbase分析目录
%的数据(从SPM-webpages消极ERP SPM文件不匹配)
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DCM.xY。Dfile = [“mansour_trials_”num2str (i)];
DCM.name = [“DCM_mansour_trials_”num2str(我)“_10”];
DCM = spm_dcm_erp (DCM);
结束
7评论
Pegah Hosseini
Pegah Hosseini 2014年5月30日
虽然我不认为你有兴趣这一趋势了,它有一个最终答案,我更新它。确实是一个问题在PCT和SPM之间的交互,在新版本中解决。至少这就是我被告知的群体。是解决这个问题的时候,我已经从SPM所以我没有回到检查它为我工作也仍有任何问题。

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!