simulink in parfor and for: different results

Hello,
I have a Simulink-Simulation. I need many evaluations with different parameters, therefore, i tried parallel computing.
The strange thing is: when i run the simulation on the matlab "workers" in a parfor loop, i get a different result compared to when i run it in a normal for-loop.
What could be the reason?
Thank you in advance, Arco Bast

댓글 수: 3

Do you have a specific example you can post so that we can try to reproduce the problem?
Arco
Arco 2014년 5월 3일
편집: Arco 2014년 5월 3일
Since my model is realy complex, I first want to give you more information - maybe this already allows to find the mistake.
My model describes a relatively large nonlinear ODE, that is very stiff, therefore, I'm using ode15s. It's main functionality is inside a Matlab-Function-Block.
So let's run the following code:
load('myParameters');
simOutput=cell(3);
parfor i=1:1
simOutput{i}=sim('mySimulation', ...
'ReturnWorkspaceOutputs', 'on', ...
'SimulationMode','normal', ...
'AbsTol','1e-6',...
'RelTol','1e-6');
end
for i=2:2
simOutput{i}=sim('mySimulation', ...
'ReturnWorkspaceOutputs', 'on', ...
'SimulationMode','normal', ...
'AbsTol','1e-6',...
'RelTol','1e-6');
end
matlabpool;
parfor i=3:3
simOutput{i}=sim('mySimulation', ...
'ReturnWorkspaceOutputs', 'on', ...
'SimulationMode','normal', ...
'AbsTol','1e-6',...
'RelTol','1e-6');
end
simOutput{1} and simOutput{2} are identical, but simOutput{3} is different. The difference is very slight, but nevertheless irritating. Might it be possible, that matlabpool has a slightly different numeric precission compared to Matlab itself?
There are very occasional slight numerical differences caused by the fact that workers run in single-computational-thread mode. Try launching the MATLAB desktop client with the "-singleCompThread" command-line argument and comparing results.

댓글을 달려면 로그인하십시오.

답변 (1개)

Abhishek M
Abhishek M 2014년 4월 14일

0 개 추천

Hi Arco, This problem arises when you aren't doing anything to save the results of the parfor loop iterations. You need introduce a new output variable and then assign your parfor output to this new variable in order to save them.

카테고리

도움말 센터File Exchange에서 Parallel Computing Toolbox에 대해 자세히 알아보기

질문:

2014년 4월 12일

댓글:

2014년 6월 4일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by