Parallelism
This course is given at spring 2019
Objectives
Objectives
- Understanding the difference between sequential and parallel programming
- Being able to write parallel algorithms from scratch
- Implementing and measuring the performance of classical algorithms
Outline
Outline
- Introduction to parallelism and concurrency
- Hardware : multi-cpu, multi-core, GPUs, Flynn classification
- Low level tools : semaphore and monitor
- Data parallelism
- Data distribution (cyclic, bloc...)
- Introduction to OpenMP
- The P-RAM model
- Basic parallel algorithms
- Analysis of parallel algorithms (complexity, efficiency...)
- Simulation of P-RAMs, Brent's principle
- Reducing the number of processors
- SCAN/PREFIX
- Sorting in parallel
- Sorting on PRAM
- Bitonic sorting network
Grading
Grading
The course will be graded with two individual projects (50%) and a written exam (50%)
Lab Sessions
Lab Sessions
Projects
Projects