Execute run phase of Simulink model in parallel

4 ビュー (過去 30 日間)
Osama Maqbool
Osama Maqbool 2016 年 9 月 30 日
編集済み: Osama Maqbool 2016 年 10 月 6 日
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?

回答 (1 件)

Edric Ellis
Edric Ellis 2016 年 10 月 3 日
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 件のコメント
Edric Ellis
Edric Ellis 2016 年 10 月 5 日
Strange. Did it fail the second time in a MATLAB session, or when you restarted MATLAB?
Osama Maqbool
Osama Maqbool 2016 年 10 月 6 日
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'.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSimulink Coder についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by