Parallel Programming Principle and Practice
Course Description
The students will get the skills to use some of the best existing parallel programming tools, and be exposed to a number of open research questions. This course will:
provide an introduction to parallel computing including parallel computer architectures, analytical modeling of parallel programs, the principles of parallel algorithm design.
include material on TBB, OpenMP, CUDA, OpenCL, MPI, MapReduce.
Prerequisite: C language, discrete mathematics, data structure, principles of computer composition, operating system, C++, algorithms
Credits: 2
Instructor: Prof. Hai Jin (hjin@hust.edu.cn)
Associate Prof. Feng Lu (lufeng@hust.edu.cn)
Syllabus
Part 1: Principle (Lecture 1-5)
This section covers the very basics of parallel computing, and is intended for someone who is just becoming acquainted with the subject. It begins with a brief overview, including concepts and terminology associated with parallel computing. The topics of parallel memory architectures and programming models are then explored. These topics are followed by a discussion on a number of issues related to designing parallel programs.
Part 2: Typical Issues Solved by Parallel Programming (Lecture 6-10)
This section concludes with several examples of how to parallelize simple serial programs. Including: threads and shared memory programming with TBB and OpenMP, SIMD programming model and Cuda & OpenCL, programming using the Message Passing Paradigm, parallel computing with MapReduce.
Part 3: Parallel Programming Case Study and Assignment (Lecture 11 and Assignment)
Students in this course are required to complete several assignments, which accounts for 30% of their grade.
Lecture Notes
LEC # |
TOPICS |
CLASS HOURS |
FILES |
VIDEOS |
1 |
Why Parallel Programming? |
2 |
|
(VIDEO) |
2 | Parallel Architecture |
2 |
|
(VIDEO) |
3 | Parallel Programming Models |
2 |
|
(VIDEO) |
4 | Parallel Programming Methodology |
2 |
|
(VIDEO) |
5 |
Parallel Programming Performance |
2 |
|
(VIDEO) |
6 |
Shared memory programming and OpenMP |
2 |
|
(VIDEO) |
7 |
Thread Programming with TBB |
2 |
|
(VIDEO) |
8 |
Programming Using the Message Passing Paradigm |
2 |
|
(VIDEO) |
9 |
Introduction to GPGPUs and Cuda Programming Model 2h |
2 |
|
(VIDEO) |
10 |
Parallel Computing with MapReduce |
2 |
|
(VIDEO) |
11 |
Experiment |
2 |
|
(VIDEO) |
Assignment
Finish three experiments: (PDF)
-
Solve Akari using backtracking
Solve Akari using parallelizing backtracking
Solve Akari using improved parallelizing backtracking
Grading:
The final exam covers 70% while the assignment accounts for 30%.
Reference Books
|
Principles of Parallel programming
By Yun Calvin Lin, Lawrence Snyder
Pearson/Addison Wesley, 2008. |
|
Heterogeneous Computing with OpenCL
By Benedict Gaster, Lee Howes, David R. Kaeli, Perhaad Mistry
Morgan Kaufmann, 2011. |
|
Introduction to Parallel Computing
By Anath Grama
Addison-Wesley Educational Publishers Inc, 2nd Revised edition, 2003. |
Other Resources for Future Study