Execute run phase of Simulink model in parallel

5 Ansichten (letzte 30 Tage)
Osama Maqbool
Osama Maqbool am 30 Sep. 2016
Bearbeitet: Osama Maqbool am 6 Okt. 2016
I want to get the output using the function model(t,x,u,'outputs'). I have a large set of inputs, which I normally pass to the model in a for loop. I have already compiled the model before the loop using model([],[],[],'compile'). When I replaced the for with a parfor loop, it does not see the model as 'compiled'. I get the error: Error, 'model' must be compiled before it can be accessed programmatically.
I don't want to compile the model inside the loop as it would make it very slow and destroy the whole purpose of using parallelization. How can I solve this?

Antworten (1)

Edric Ellis
Edric Ellis am 3 Okt. 2016
You can use parfevalOnAll to run the 'compile' and 'term' phases, like so:
parfevalOnAll(@vdp, 0, [], [], [], 'compile');
parfor t = 1:10
out{t} = vdp(t, [0; 0], [], 'outputs');
end
parfevalOnAll(@vdp, 0, [], [], [], 'term');
  3 Kommentare
Edric Ellis
Edric Ellis am 5 Okt. 2016
Strange. Did it fail the second time in a MATLAB session, or when you restarted MATLAB?
Osama Maqbool
Osama Maqbool am 6 Okt. 2016
In the same session. I can't seem to find a pattern on what gives the error. Many a times, I have made it work by deleting the contents of a folder generated automatically, called 'slprj', specifically the subfolder '_jitprj'.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink Coder finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by