Machine learning system optimisation begins with measurement. Before changing an algorithm, adding processors, or moving work to a GPU, we need to understand what is slow, which resource is limiting performance, and how performance changes as the workload grows.
This page covers:
- time and space complexity
- throughput and latency
- the relationship between workload, throughput, and latency
- the main measurements used to describe system performance
Learning Objectives
#
By the end of this page, you should be able to:
Parallel and Distributed Algorithms
#
Parallelisation divides computational work into parts that can execute concurrently. The purpose is to reduce completion time or increase throughput, but the gain depends on how much work is genuinely independent and how much overhead is introduced.
This page covers:
- speedup, maximum speedup, and processor efficiency
- Amdahl’s Law
- data-level parallelism
- task-level parallelism
- algorithm-specific parallelism
- communication, synchronisation, scheduling, and load-balancing overhead
- parallel merge sort and matrix multiplication
Learning Objectives
#
By the end of this page, you should be able to:
ML System Optimization,
MLSysOps,
Multi-Core CPU,
GPGPU,
SIMD,
MIMD,
SIMT,
GPU,
TPU,
AI,
ML Parallel Programming Models
#
Parallel algorithms need hardware that can execute independent work efficiently. Modern systems therefore combine multiple CPU cores, memory hierarchies, threads, instruction pipelines, GPUs, clusters, and specialised matrix processors.
This page covers:
- multi-core CPU organisation
- cache and memory hierarchy
- processes, threads, scheduling, and synchronisation
- instruction pipelining and clock-cycle time
- SIMD, MIMD, and SIMT execution
- GPGPU architecture and GPU memory behaviour
- CPU-only and GPU-accelerated clusters
- Tensor Processing Units and systolic arrays
Learning Objectives
#
By the end of this page, you should be able to: