MATLAB and Simulink Training

Accelerating and Parallelizing MATLAB Code

View schedule and enroll

Course Details

This two-day course covers a variety of techniques for making your MATLAB® code run faster. You will identify and remove computational bottle-necks using techniques like preallocation and vectorization. In addition, you will compile MATLAB code into MEX-files using MATLAB Coder™. On top of that, you will take advantage of multiple cores on your computer by parallelizing for-loops with Parallel Computing Toolbox™, and scale up across clusters or clouds ranging from a moderate number of cores to High Performance Computing (HPC) using MATLAB Parallel Server™. Interplay between those concepts will be explored throughout the course. If you are working with long-running simulations, you will benefit from the hands-on demonstrations and exercises in the course.
 
Topics include:
 
  • Improving performance within core MATLAB
  • Generating MEX-files
  • Parallelizing computations
  • Offloading execution
  • Working with clusters
  • GPU computing

Day 1 of 2


Improving Performance

Objective: Analyze code performance and utilize techniques for acceleration within MATLAB.

  • Identifying bottle necks
  • Preallocating arrays
  • Vectorizing operations in various ways
  • Rewriting algorithms

Generating MEX-Files

Objective: Generate compiled code files from MATLAB code for better performance.

  • MATLAB Coder overview and workflow
  • Generating and verifying MEX-files
  • Calling unsupported functions
  • Adjusting settings for MEX-file generation

Parallelizing Computations

Objective: Parallelize code execution to take advantage of multiple cores.

  • Opening additional MATLAB processes
  • Running parallel for-loops
  • Measuring speedup
  • Processing multiple files in parallel

Day 2 of 2


Parallel for-Loops

Objective: Explore parallel for-loops in more detail and apply techniques for converting for-loops to parfor-loops.

  • Requirements of parallel for-loops
  • Parallelizing for-loops
  • Retrieving intermediate results

Offloading Execution

Objective: Offload computations to another MATLAB process in order to be able to use MATLAB for other tasks in the meantime. This is also a preparation step for working with clusters.

  • Processing in batch
  • Creating batch jobs
  • Retrieving results
  • Using the Job Monitor

Working with Clusters

Objective: Accelerate computations and realize more extensive simulations by utilizing multiple computers.

  • Local and remote clusters
  • Dynamic licensing
  • Cluster discovery and connection
  • File access considerations

GPU Computing

Objective: Execute MATLAB code on your computer’s graphics card (GPU) as another option for speeding up calculations.

  • Overview of GPU architecture and processing
  • Applications suitable for GPU processing
  • Invoking MATLAB functions on the GPU
  • Generating CUDA® MEX files using GPU Coder™
  • Using pre-existing CUDA code

Level: Intermediate

Prerequisites:

Duration: 2 days

Languages: English, 한국어

View schedule and enroll