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 multiple computers 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, Français, 한국어