Description
In this course, you will learn:
- Learn all about synchronization, thread pools, asynchronous tasks, evaluating parallel performance, designing parallel programs, and more.
- Upon wrapping up this course, you'll have a solid understanding of how to parallelize a sequential program.
Syllabus:
- Introduction
- Learn parallel programming basics
- What you should know
- Exercise Files
1. Synchronization
- Condition variable
- Condition variable: Java demo
- Producer–consumer
- Producer–consumer: Java demo
- Semaphore
- Semaphore: Java demo
2. Barriers
- Race condition
- Race condition: Java demo
- Barrier
- Barrier: Java demo
- CountDownLatch: Java demo
3. Asynchronous Tasks
- Computational graph
- Thread pool
- Thread pool: Java demo
- Future
- Future: Java demo
- Divide and conquer
- Divide and conquer: Java demo
4. Evaluating Parallel Performance
- Speedup, latency, and throughput
- Amdahl's law
- Measure speedup
- Measure speedup: Java demo
5. Designing Parallel Programs
- Partitioning
- Communication
- Agglomeration
- Mapping
6. Challenge Problems
- Welcome to the challenges
- Challenge: Matrix multiply in Java
- Solution: Matrix multiply in Java
- Challenge: Merge sort in Java
- Solution: Merge sort in Java
- Challenge: Download images in Java
- Solution: Download images in Java