This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

parsim

Simulate dynamic system multiple times in parallel or serial

Syntax

simOut = parsim(in)
simOut = parsim(in,'ShowSimulationManager','on')
simOut = parsim(in,Name,Value,...NameN,ValueN)

Description

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

simOut = parsim(in,'ShowSimulationManager','on') simulates a model in parallel using the inputs specified in the SimulationInput object and opens the Simulation Manager UI. For more information, see Simulation Manager.

simOut = parsim(in,Name,Value,...NameN,ValueN) simulates a model in parallel using the inputs specified in the SimulationInput object and the options specified as the Name,Value pair.

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

Examples

collapse all

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));
end

Simulate the model in parallel.

out = parsim(in, 'ShowProgress', 'on')
[08-Jan-2018 14:10:43] Checking for availability of parallel pool...
Starting parallel pool (parpool) using the 'local' profile ...
connected to 6 workers.
[08-Jan-2018 14:11:12] Loading Simulink on parallel workers...
[08-Jan-2018 14:11:40] Configuring simulation cache folder on parallel workers...
[08-Jan-2018 14:11:40] Loading model on parallel workers...
[08-Jan-2018 14:11:48] Running simulations...
[08-Jan-2018 14:12:04] Completed 1 of 6 simulation runs
[08-Jan-2018 14:12:04] Completed 2 of 6 simulation runs
[08-Jan-2018 14:12:04] Completed 3 of 6 simulation runs
[08-Jan-2018 14:12:08] Completed 4 of 6 simulation runs
[08-Jan-2018 14:12:09] Completed 5 of 6 simulation runs
[08-Jan-2018 14:12:09] Completed 6 of 6 simulation runs
[08-Jan-2018 14:12:09] Cleaning up parallel workers...

out = 

1x6 Simulink.SimulationOutput array


Simulate the model, vdp, in rapid accelerator mode.

Load the model.

model = 'vdp';
load_system(model)

This step builds the Rapid Accelerator target

Simulink.BlockDiagram.buildRapidAcceleratorTarget(model);

Create a SimulationInput object and use setModelParameter method to set RapidAcceleratorUpToDateCheck to 'off'.

in = in.setModelParameter('SimulationMode', 'rapid-accelerator');
in = in.setModelParameter('RapidAcceleratorUpToDateCheck', 'off');
 

Simulate the model.

out = parsim(in)

Input Arguments

collapse all

A Simulink.SimulationInput object or an array of Simulink.SimulationInput objects that is used to specify changes to the model for a simulation.

Example: in = Simulink.SimulationInput('vdp')

Name-Value Pair Arguments

Example: 'ShowProgress', 'on'

Note

All parameters passed to parsim command are unrelated to the parameters that are used with the sim command. To pass to the parsim command, use the list of following input arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name and Value must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Specified as a cell array of additional files to attach to the parallel pool.

Set to 'on', to see the progress of the simulations in the command window. The progress is hidden when set to 'off'.

Note

When the progress is shown, a message 'Cleaning up parallel workers..' may 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.

Set to 'on' to run simulations asynchronously, keeping the MATLAB® command prompt available for use.

Specify a function handle to 'SetupFcn' to run once per worker before the start of the simulations.

Example: 'SetupFcn',@()simulinkproject('OCRAex/OCRA_example.prj')

Note

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.

Specify a function handle to 'CleanupFcn' to run once per worker after the simulations are completed.

When ManageDependencies is set to on, model dependencies are automatically sent to the parallel workers if required. If ManageDependencies is set to off, explicitly attache model dependencies to the parallel pool.

When UseFastRestart is set to true, simulations run on the workers using fast restart.

Note

When using parsim, use the UseFastRestart option and not the FastRestart option. See Get Started with Fast Restart for more information.

When TransferBaseWorkspaceVariables is set to true, variables used in the model and defined in the base workspace are transferred to the parallel workers.

Note

Use of TransferBaseWorkspaceVariables requires model compilation.

When 'ShowSimulationManager' is set to 'on', you can use the Simulation Manager App to monitor simulations.

Setting 'StopOnError' to 'on' stops the execution of simulations if an error is encountered.

Output Arguments

collapse all

Array of Simulink.SimulationOutput objects that contains all of the logged simulation results. 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. You define the model time, states, and output that is logged using the Data Import/Export pane of the Model 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

Introduced in R2017a