(a.k.a Parallel Computing)
Credits: 3
Contact Hours: 3 hours of lecture
Instructor: Seung Woo Son
Textbook:
Other supplemental materials: All supplemental materials can be found on the UMass Lowell Blackboard portal (https://www.uml.edu/blackboard/). These materials include lecture slides, handouts, recordings, assignments, quizzes, and other documentation.
Course Catalog Description:
This course is an introduction to parallel computing for engineers and scientists, covering the basic concepts and widely used parallel computing systems and parallel programming models. With prevalence of multi-core and even recent accelerators such as NVIDIA GPUs and Intel Xeon Phi coprocessors, parallel programming is everywhere; even laptops and cellphones have several processing cores. Therefore, application programmers need to know a productive way to express their computation to exploit available parallel computing powers.
The course will be structured as lectures, homeworks, programming assignments and a final project. Students are expected to code several programming projects using selected parallel programming models and measure their performance. The final projects will implement parallel algorithms/programs using one or more programming models.
Prerequisites: There is no formal prerequisite, but these are recommended: basic programming skills (e.g., EECE.2160 ECE Application Programming). Understanding of computer architecture (e.g., EECE.4820 Computer Architecture and Design) will be a plus.
Grading: Attendance (5%), Written and Programming Assignments (50%), Exams (25%), Course project (20%)
Required or elective? This course may be used as a technical elective for Computer Engineering majors.
Course Outcomes:
By the end of this course, students will understand and be able to use all of the following:
Course Topics
Schedule
Note that below is a tentative schedule based on 14 meetings.
Week | Topic | Reading | Assignment |
---|---|---|---|
1 | Course overview; Parallel computing architecture (1/2) | Chapter 1 and 2 | HW1 |
2 | Parallel computing architecture (2/2) | Chapter 2 | |
3 | XSEDE tutorial and lab | ||
4 | Distributed memory programming (1/3) | Chapter 3 | HW2 |
5 | Distributed memory programming (2/3) | Chapter 3 | programming 1; Project idea |
6 | Distributed memory programming (3/3) | Chapter 3 | |
7 | Midterm exam | ||
8 | Shared memory programming (pthread) | Chapter 4 | programming 2; Project proposal |
9 | Shared memory programming (OpenMP) (1/2) | Chapter 5 | |
10 | Shared memory programming (OpenMP) (2/2) | Chapter 5 | programming 3 |
11 | CUDA (1/2) | Course material by NVidia | |
12 | CUDA (2/2) | programming 4 | |
13 | Parallel algorithms | Chapter 6 | |
14 | Project presentation | ||
Final exam (exam week) |