Parsim with Parallel Computing Toolbox provides unexpected results.

I have the Parallel Computing Toolbox so that I can ultimately use parsim() to run a simulink model, containing six blocks, in parallel. The idea is to run each model with a different block enabled so that the blocks run in parallel.
As an experiment, I ran the model with one block enabled but ran sim(). It provided an expected figure with results.
When I then ran that model with the same block enabled but ran parsim(), it provided a blank figure.
How does pasim() run? I expected the same results with parsim() and sim() in this very simple case.

Answers (1)

Hi Elizabeth,
the blog post below has a good description of the setup that you may need to run the Simulink model using parsim.
It comes down to properly creating the Simulink.SimulationInput object.
As the article says, by creating one Simulink.SimulationInput per simulation, you can define the properties specific to each run, including initial states, model parameters, block parameters, input signals, and variables used by the model.

6 Comments

Thank you. I appreciate the reply. I do create the Simulink.SimulationInput object as described in that article. Something subtle is occurring that causes the parsim() version to show incomplete results. I am in the process of simplifying the model and learning how to use the simulink debugger to narrow down the problem.
It appears that the model running in a parsim() worker does not see the base workspace variables setup by the matlab script.
Parallel workers never see global variables, if you happen to have some of those.
Thank you. That makes sense. Moving variables, created by the matlab script (in base workspace), to model workspace cleaned up some minor issues but did not solve the original problem.
Hi to both of you, I have the same issue: I run my model with parsim but my workspace variables aren't seen from the model on each worker. How can I send all the needed variables to each worker in such a way they can simulate successfully? Thank-you, kind regards, Antonio
If variables are loaded separately from the model, you can use the 'TransferBaseWorkspaceVariables' option with parsim.
You could also use a data dictionary to store the variables used in the model in which case parsim will automatically pick them up for use on the parallel workers. https://www.mathworks.com/help/simulink/ug/what-is-a-data-dictionary.html

Sign in to comment.

Categories

Asked:

on 15 May 2017

Commented:

on 4 Sep 2018

Community Treasure Hunt

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

Start Hunting!