Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink...

40
1 © 2015 The MathWorks, Inc. Speeding Up Simulation Sonia Bridge

Transcript of Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink...

Page 1: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

1© 2015 The MathWorks, Inc.

Speeding Up Simulation

Sonia Bridge

Page 2: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

2

Why Speed up Simulation?

– “I have a big model and need to run long simulations as quickly as

possible”

– “I need to perform design optimization as quickly as possible, which

requires running many simulations as my design parameters change”

– “I need to perform thousands of Monte Carlo simulations as quickly

as possible”

– “My model takes forever to update”

Page 3: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

3

Agenda

▪ Acceleration mode

▪ Performance Advisor

▪ Fast Restart, parsim and batchsim

▪ Incremental workflows with Model Referencing

Page 4: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

4

Let’s look at an example model to see how Acceleration can

speed up simulations

Page 5: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

5

Normal Mode

Page 6: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

6

Agenda

▪ Acceleration mode

▪ Performance Advisor

▪ Fast Restart, parsim and batchsim

▪ Incremental workflows using Model Referencing

Page 7: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

7

Accelerator Mode

Page 8: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

8

Accelerator Mode

Why would Simulink speed up?

▪ JIT compiles (or generates C-code for) portions of the model

▪ Running compiled code has less overhead

What’s the tradeoff?

▪ There is an overhead for generating the acceleration target

▪ Some runtime diagnostics are disabled, e.g., inf/nan checking

▪ May not speed up all models

R2006aIntroduced before

Page 9: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

9

Rapid Accelerator Mode

Page 10: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

10

Use Rapid Accelerator Mode

Why would Simulink speed up?

▪ The Rapid Accelerator mode creates and runs a

standalone executable from the model, which has little

overhead.

▪ If possible, this executable runs on a separate core than the MATLAB session

What’s the tradeoff?

▪ It takes time to build the Rapid Acceleration target

▪ Debugging capabilities are disabled, except for scopes and viewers

▪ Entire model needs to support code generation

Page 11: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

11

Agenda

▪ Acceleration mode

▪ Performance Advisor

▪ Fast Restart, parsim and batchsim

▪ Incremental workflows using Model Referencing

Page 12: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

12

Performance Advisor Example

Page 13: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

13

Let’s run the Performance Advisor on the model

Page 14: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

14

Performance Advisor – Results

Page 15: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

15

Performance Advisor

Why would Simulink speed up?

▪ Checks your model for speedup options

▪ Validates its own advice, only applies changes that:

▪ Give the same answer

▪ Improve speed

What’s the tradeoff?

▪ Takes time to run the analysis

▪ Not comprehensive

▪ Trading off fidelity for speed is not part of performance advisor

Page 16: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

16

Agenda

▪ Acceleration mode

▪ Performance Advisor

▪ Fast Restart, parsim and batchsim

▪ Incremental workflows using Model Referencing

Page 17: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

17

Fast Restart Example

Page 18: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

18

Fast Restart

Why would Simulink speed up?

▪ Avoids recompilation between simulation runs

▪ Works with Accelerator mode

What’s the tradeoff?

▪ Cannot edit the model when in fast restart mode

Page 19: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

19

Running Multiple Simulations in Parallel

▪ Use SimulationInput object to

specify changes to a model for

simulations

▪ Use parsim to run parallel

simulations

▪ Use Simulation Manager to

monitor and inspect results from

multiple simulations

Page 20: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

20

Benefits of using parsim

out = parsim(in);

▪ parsim “mistake-proofs” your workflow

– Handle model dependencies

– Automatic management of build folders

– Parallel builds of model references

– Transfer base workspace variables to workers

– Error diagnostics

– Progress display

– And more …

That’s it!One command to run them all!

parsim manages

the details of

running parallel

simulations

… so you can focus

on the design tasks!

Page 21: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

21

Code example for parameter sweep using parsim

Page 22: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

22

Simulation Manager Example

Page 23: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

23

parsim

Why would Simulink speed up?

▪ Runs simulations in parallel using MATLAB

Parallel Computing

▪ Parallelization details are automatically handled

What’s the tradeoff?

▪ Overhead of setting up parallel pool

▪ Overhead of starting simulations on the workers

▪ Needs scripting in MATLAB

for i = 10000:-1:1

in(i) = Simulink.SimulationInput('my_model');

in(i) = in(i).setVariable('my_var', i);

end

out = parsim(in);

Desktop Multicore Cluster

Page 24: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

24

Batch Workflows

▪ Submit jobs and retrieve results later

Submit job

Page 25: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

25

Batch Workflows

▪ Submit jobs and retrieve results later

Retrieve results

Page 26: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

26

batchsim

MATLAB®

client

MATLAB®

workers

parsim

batchsim automates batch workflows

▪ Automates set up for running

simulations in the background

▪ Extends parsim functionality to

support batch options

job = batchsim(in);

Page 27: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

27

parsim vs. batchsim

parsim batchsim

Blocking Non-blocking

Possible to obtain intermediate results

on-the-fly

Simulations are offloaded; retrieve

complete results later

Interactive Not interactive

Page 28: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

28

Simulation code for batchsim

Page 29: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

29

Post-processing code for batchsim

Page 30: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

30

Agenda

▪ Acceleration mode

▪ Performance Advisor

▪ Fast Restart, parsim and batchsim

▪ Incremental workflows using Model Referencing

Page 31: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

31

What is an incremental workflow?

Only perform an action when necessary;

reuse and cache as much as possible

“My model takes forever to update”

Page 32: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

32

Model Reference: Performance

0

10

20

30

40

50

60

70

First Simulation Subsequent Simulations

Simulation Times

Subsystems Model Reference

Faster ☺

First time cost

▪ Documentation: Design Partitioning

Page 33: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

33

Simulink Cache

▪ Sharing build artifacts avoids

rebuild

.slxc.slxc.slxc.slxc

.slxc

.slxc

.slxc

Page 34: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

34

Parallel Builds for Model Reference Hierarchies

▪ Speed up updates for models with large model reference hierarchies:

▪ Enable parallel builds using Configuration Parameters

▪ Performance Advisor checks for parallel build opportunities

▪ Enable the If any changes in known dependencies detected build option

Page 35: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

35

Model Reference Parallel Build

User Example

▪ Approximately 400 referenced models

4 cores gives ~2.8 speedup

Does adding more cores yield more speedup?

1212.8

3421.8

Page 36: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

36

Performance Advisor: Check model reference parallel build

▪ Performance Advisor estimates the

speedup with more cores

▪ The estimated speed up with 4

cores is ~2.6

– Close to the measured value ~2.8

▪ Given ~120 cores, the estimated

speed up is ~42

=> Build time goes from ~3400s to ~80s

Page 37: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

37

Model Reference Parallel Build

Why would Simulink speed up?

▪ Model reference targets are built in parallel

▪ Use Performance Advisor to check if your large

models can benefit from this option

What’s the tradeoff?

▪ Speedup is model dependent

▪ Requires MATLAB Parallel Computing

Page 38: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

38

Learn more about additional speedup tips

▪ Use of Simulink Profiler and sldiagnostics to identify bottlenecks

▪ Accelerate the initialization phase

▪ Reduce model interactivity

▪ Reduce model complexity with alternatives such as look-up tables and

linear models

▪ Choose and configure a Solver

▪ Save the Simulation State

▪ Documentation: Modeling Techniques that Improve Performance

Page 39: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

39

Key Takeaways

▪ Recommended steps to easily speed up your Simulink models

▪ How parallel computing tools decrease the time to run multiple simulations

Page 40: Speeding Up Simulation - Matlab · Learn more about additional speedup tips Use of Simulink Profiler and sldiagnosticsto identify bottlenecks Accelerate the initialization phase Reduce

40

Q & A