Lectures:
Part I: Introduction
- Introduction to Parallel Computers
- Introduction to Parallel Computing
Part II: Parallel Programming
- Message-Passing Programming (MPI)
- Shared Memory Programming (Pthread and OpenMP)
Part III: Parallel Computing Techniques
- Embarrassingly Parallel Computations
- Partitioning and Divide-and-Conquer Strategies
- Pipelined Computations
- Synchronous Computations
- Load Balancing and Termination Detection
Part IV: GPU Programming
- Heterogeneous computing
- CUDA programming model
- GPU Architecture & Multi-GPU
- Advanced CUDA Programming & Optimization
Part V: Distributed Programming
- Big Data frameworks: MapReduce, Spark
- Distributed Deep Learning
1. Parallel Programming – Techniques and applications Using Networked
Workstations and Parallel Computers, Barry Wilkinson and Michael Allen, Prentice Hall, 1999.
2. Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw-Hill, 2003.
Programming assignment: 100%
(1) MPI: Even-old Sort
(2) OpenMP + MPI: Mandelbort
(3) CUDA: All-Pair-Shortest-Path
(4) MPI+Pthread: MapReduce
(5) Final Project