Documentation

Simulink.sdi.WorkerRun class

Package: Simulink.sdi

Access simulation data from parallel workers

Description

The Simulink.sdi.WorkerRun class provides access to run data generated on Parallel Computing Toolbox™ parallel workers. Create a Simulink.sdi.WorkerRun object on the worker, and then use the object to access data in your local MATLAB® session.

Construction

workerRun = Simulink.sdi.WorkerRun(runID) creates a Simulink.sdi.WorkerRun object with the run identifier specified by runID.

workerRun = Simulink.sdi.WorkerRun.getLatest creates a Simulink.sdi.WorkerRun object of the most recent run.

Input Arguments

expand all

Run identifier

Methods

getDatasetCreate Dataset of worker run data
getDatasetRefCreate DatasetRef for worker run
getLatestCreate worker run for latest run
getLocalRunCreate local run from worker run

Copy Semantics

Handle. To learn how handle classes affect copy operations, see Copying Objects (MATLAB).

Examples

expand all

This example executes parallel simulations of the model slexAircraftExample with different input filter time constants and shows several ways to access the data using the Simulation Data Inspector API.

Generate Data with Parallel Simulations

Create a vector of filter parameter values to use a different value in each simulation. Then, run a parallel simulation, selecting a different filter value for each worker.

% Make sure the Simulation Data Inspector is empty, and PCT support is
% enabled.
Simulink.sdi.clear
Simulink.sdi.enablePCTSupport(1)

% Define Ts values
Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];

parfor index = 1:7

    % Select value for Ts
    Ts_val = Ts_vals(index);

    % Load system and select signals to log
    load_system('slexAircraftExample')
    Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot', 1, 'on')
    Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 4, 'on')

    % Change the filter time constant and simulate
    modelWorkspace = get_param('slexAircraftExample', 'modelworkspace');
    modelWorkspace.assignin('Ts', Ts_val)
    sim('slexAircraftExample')

    % Create a worker run for each simulation
    workerRun(index) = Simulink.sdi.WorkerRun.getLatest
end

Get Dataset Objects from Parallel Simulation Output

The getDataset method puts the data from a WorkerRun into a Dataset object so you can easily post-process.

ds(7) = Simulink.SimulationData.Dataset;

for a = 1:7
    ds(a) = workerRun(a).getDataset;
end
ds(1)
ans = 

Simulink.SimulationData.Dataset '' with 2 elements

                         Name        BlockPath                                
                         __________  ________________________________________ 
    1  [1x1 Signal]      alpha, rad  ...rcraftExample/Aircraft Dynamics Model
    2  [1x1 Signal]      Stick       slexAircraftExample/Pilot               

  - Use braces { } to access, modify, or add elements using index.

Get DatasetRef Objects from Parallel Simulation Output

For big data workflows, use the getDatasetRef method to reference the data associated with the WorkerRun.

for b = 1:7
    datasetRef(b) = workerRun(b).getDatasetRef;
end
datasetRef(1)
ans = 

  DatasetRef with properties:

           Name: 'Run 6: slexAircraftExample'
            Run: [1×1 Simulink.sdi.Run]
    numElements: 2

Process Parallel Simulation Data in the Simulation Data Inspector

You can also create local Run objects to analyze and visualize your data using the Simulation Data Inspector API. This example adds a tag indicating the filter time constant value for each run.

for c = 1:7
    Runs(c) = workerRun(c).getLocalRun;
    Ts_val_str = num2str(Ts_vals(c));
    desc = strcat('Ts = ', Ts_val_str);
    Runs(c).Description = desc;
    Runs(c).Name = strcat('slexAircraftExample run Ts=', Ts_val_str);
end

Clean Up Worker Repositories

Clean up the files used by the workers to free up disk space for other simulations you want to run on your worker pool.

Simulink.sdi.cleanupWorkerResources

Alternatives

You can also access, view, and analyze simulation data from Parallel Computing Toolbox workers using the Simulation Data Inspector UI.

Introduced in R2017b

Was this topic helpful?