Run Parallel Simulations
parsim command allows you to run parallel
(simultaneous) Simulink® simulations of your model (design). In this context, parallel runs mean multiple
simulations at the same time on different workers.
parsim makes it easy
for you to run the same model with different inputs or different parameter settings in
scenarios such as Monte Carlo analyses, parameter sweeps, model testing, experiment design,
and model optimization. Running a single simulation in parallel by decomposing the model into
smaller components and running those individual pieces simultaneously on multiple workers is
currently not supported.
You can run multiple simulations through the Simulink Editor with the Multiple Simulations panel. You can pick a block parameter of interest from the model canvas and specify values that you want to use for the simulations. With the Multiple Simulations panel, you can provide configurations such as Use Parallel to run your simulations in parallel. To run the simulations that you have set up, first, select the design study, then click Run All button on Simulation tab on the Simulink toolstrip. Once the simulations are complete, you can view and manage the results in Simulation Manager. For more information, see Multiple Simulations Panel: Simulate for Different Values of Stiffness for a Vehicle Dynamics System and Configure and Run Simulations with Multiple Simulations Panel.
To run the simulations in parallel with
parsim, you need a Parallel Computing Toolbox™ for local workers. In addition, you can use MATLAB®
Parallel Server™ for multiple computer clusters, clouds, and grids. In the absence of Parallel Computing Toolbox and MATLAB
parsim runs the simulations in serial. For more
information, see Parallel Computing Toolbox and MATLAB Parallel Server.
If no parallel pool exists,
parsim creates a pool from the default
cluster profile . To use a cluster other than the default, create a pool with that cluster
profile before calling
This example runs multiple simulations in parallel for a set of sweep parameters.
% 1) Load model openExample('sldemo_suspn_3dof'); model = 'sldemo_suspn_3dof'; load_system(model); % 2) Set up the sweep parameters Cf_sweep = 2500*(0.05:0.1:0.95); numSims = numel(Cf_sweep); % 3) Create an array of SimulationInput objects and specify the sweep value for each simulation simIn(1:numSims) = Simulink.SimulationInput(model); for idx = 1:numSims simIn(idx) = simIn(idx).setBlockParameter([model '/Road-Suspension Interaction'], 'Cf', num2str(Cf_sweep(idx))) end % 4) Simulate the model simOut = parsim(simIn)
parsim runs simulations with different parameters and values based on
Simulink.SimulationInput object. Each
SimulationInput object specifies one simulation of the model. An array
of these objects can be created for multiple simulations. For more information, see Running Multiple Simulations.
You can use the following methods and properties on
setVariables- Change variables in base workspace, data dictionary, or model workspace
setBlockParameter- Change block parameters
setModelParameter- Change model parameters
setPreSimFcn- Specify MATLAB functions to run before each simulation for customization and post-processing results on the cluster
setPostSimFcn- Specify MATLAB functions to run after each simulation for customization and post-processing results on the cluster
InitialState- Change the Initial State
ExternalInput- Specify a numerical array, timeseries, or Dataset object as external inputs to the model
This flowchart shows a general sequence of events that occur when
parsim is executed
Changes to model library blocks can be overwritten when using
When models are set up on new workers, model inherits properties directly from the worker
parsim to transfer the
model library block changes to the workers.