Main Content


Simulate dynamic system multiple times in parallel or serial



simOut = parsim(in) simulates a model using the inputs specified in the SimulationInput object, in. The parsim function uses an array of SimulationInput objects to run multiple simulations.

simOut = parsim(in,Name=Value) simulates a model in parallel using the inputs specified in the SimulationInput object and the options specified using one or more name-value arguments.

The parsim function requires the Parallel Computing Toolbox™ license to run the simulations in parallel. The parsim function runs the simulations in serial if a parallel pool cannot be created or if Parallel Computing Toolbox is not used.


collapse all

Simulate the model vdp in rapid accelerator mode.

Load the model.

mdl = "vdp";

This step builds the Rapid Accelerator target


Create a SimulationInput object and use the setModelParameter function to set RapidAcceleratorUpToDateCheck to "off".

in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,SimulationMode="rapid-accelerator");
in = setModelParameter(in,RapidAcceleratorUpToDateCheck="off");

Simulate the model.

out = parsim(in);

Simulate the model, CSTR, in parallel by sweeping over a variable. An array of SimulationInput objects is used to perform the sweep.

Specify sweep values.

FeedTempSweep = 250:10:300;

Create an array of SimulationInput objects.

for i = length(FeedTempSweep):-1:1
in(i) = Simulink.SimulationInput('CSTR');
in(i) = in(i).setVariable('FeedTemp0',FeedTempSweep(i));

Simulate the model in parallel.

out = parsim(in, 'ShowSimulationManager', 'on')
[29-Jun-2022 15:05:52] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'Processes' profile ...
Connected to the parallel pool (number of workers: 6).
[29-Jun-2022 15:07:01] Starting Simulink on parallel workers...
[29-Jun-2022 15:07:34] Configuring simulation cache folder on parallel workers...
[29-Jun-2022 15:07:35] Loading model on parallel workers...
[29-Jun-2022 15:07:49] Running simulations...
[29-Jun-2022 15:08:24] Completed 1 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 2 of 6 simulation runs
[29-Jun-2022 15:08:24] Completed 3 of 6 simulation runs
[29-Jun-2022 15:08:27] Completed 4 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 5 of 6 simulation runs
[29-Jun-2022 15:08:28] Completed 6 of 6 simulation runs
[29-Jun-2022 15:08:28] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array

Input Arguments

collapse all

Inputs and configurations for parallel simulations, specified as an array of Simulink.SimulationInput objects.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: ShowProgress="on"

Additional files to attach to the parallel pool, specified as a cell array of character vectors. The parsim function does not support using From File blocks to load data from MAT files in subdirectories.

Option to show progress of simulations, specified as "on" or "off". Set to "on", to see the progress of the simulations in the MATLAB® Command Window. The progress is hidden when set to "off".


When the progress is shown, a message 'Cleaning up parallel workers..' might be displayed before the completion of the last few simulations. This message does not depend on the completion of the simulations. Simulations complete when the outputs are fetched from the future. For more information, see Simulink.Simulation.Future.

Option to run simulations in background, specified as "off" or "on". Set to "on" to run simulations asynchronously, keeping the MATLAB command prompt available for use. To terminate the simulations running in the background, use the cancel function of the Simulink.Simulation.Future objects.

When you specify the 'RunInBackground' argument as "on", the parsim function returns Simulink.Simulation.Future objects. Use theSimulink.Simulation.Future object to access the SimulationOutput object.

Function to run once per worker before starting simulations, specified as a function handle.

Example: SetupFcn=@()openProject("Modelex/Model_example.prj")


When buildRapidAcceleratorTarget is used in the SetupFcn and the model has external inputs specified,​ either set LoadExternalInput to "off" or ensure that the specified external input is available on the workers to prevent compilation error.

Function to run once per worker after running simulations, specified as a function handle.

Option to manage model dependencies, specified as "on" or "off". When ManageDependencies is set to "on", model dependencies are automatically sent to the parallel workers if required. If ManageDependencies is set to "off", explicitly attach model dependencies to the parallel pool.

Option to use fast restart, specified as "off" or "on". When UseFastRestart is set to "on", simulations run on the workers using fast restart.

When performing a parameter sweep that varies properties of a Simscape™ component, such as the mass and inertia of a Solid block in Simscape Multibody™, specify the Simscape block parameter as run-time configurable. For more information, see About Simscape Run-Time Parameters (Simscape).


The parsim function does not support fast restart for models that contain To File blocks.

Option to transfer variables to parallel workers, specified as "off" or "on". When TransferBaseWorkspaceVariables is set to "on", variables used in the model and everything defined in the base workspace are transferred to the parallel workers.

The TransferBaseWorkspaceVariables option is not recommended for large scale simulations. Transferring unnecessary base workspace data leads to wasted network and memory usage. Instead, consider using project startup scripts, model callback functions, or the SetupFcn name-value argument to define the base workspace data.

Option to open Simulation Manager, specified as "off" or "on". When ShowSimulationManager is set to "on", you can use the Simulation Manager to monitor simulations.

Option to skip remaining simulations if simulation error occurs, specified as "off" or "on". Setting StopOnError to "on" stops the execution of simulations if a simulation error occurs.

Output Arguments

collapse all

Simulation results, returned as an array of Simulink.SimulationOutput objects that each contain all of the logged data from a simulation. The size of the array is equal to the size of the array of Simulink.SimulationInput objects.

All simulation outputs (logged time, states, and signals) are returned in a single Simulink.SimulationOutput object. Specify the data to log using the Data Import/Export pane of the Configuration Parameters dialog box. You can log signals using blocks such as the To Workspace and Scope blocks. The Signal & Scope Manager can directly log signals.

Extended Capabilities

Version History

Introduced in R2017a